Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

241

13.05.2013, 22:35

Gerade einen schönen Quine entdeckt entdeckt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ruby
l=92.chr;eval s="s=s.dump[r=1..-2].gsub(/("+l*4+"){4,}(?!\")/){|t|'\"+l*%d+\"'%(t
.size/2)};5.times{s=s.dump[r]};puts\"# python\\nprint(\\\"# perl\\\\nprint(\\\\\\
\"# lua"+l*4+"nprint("+l*7+"\"(* ocaml *)"+l*8+"nprint_endline"+l*15+"\"-- haskel
l"+l*16+"nimport Data.List;import Data.Bits;import Data.Char;main=putStrLn("+l*31
+"\"/* C */"+l*32+"n#include<stdio.h>"+l*32+"nint main(void){char*s[501]={"+l*31+
"\"++intercalate"+l*31+"\","+l*31+"\"(c(tail(init(show("+l*31+"\"/* Java */"+l*32
+"npublic class QuineRelay{public static void main(String[]a){String[]s={"+l*31+"
\"++intercalate"+l*31+"\","+l*31+"\"(c("+l*31+"\"brainf**k"+l*64+"n++++++++[>++++
<-]+++++++++>>++++++++++"+l*31+"\"++(concat(snd(mapAccumL h 2("+l*31+"\"110"+l*31
+"\"++g(length s)++"+l*31+"\"22111211100111112021111102011112120012"+l*31+"\"++co
ncatMap("+l*32+"c->let d=ord c in if d<11then"+l*31+"\"21002"+l*31+"\"else"+l*31+
"\"111"+l*31+"\"++g d++"+l*31+"\"22102"+l*31+"\")s++"+l*31+"\"2100211101012021122
2211211101000120211021120221102111000110120211202"+l*31+"\"))))))++"+l*31+"\","+l
*63+"\""+l*64+"n"+l*63+"\"};int i=0;for(;i<94;i++)System.out.print(s[i]);}}"+l*31
+"\")))))++"+l*31+"\",0};int i=0;for(;s[i];i++)printf("+l*63+"\"%s"+l*63+"\",s[i]
);puts("+l*63+"\""+l*63+"\");return 0;}"+l*31+"\");c s=map("+l*32+"s->"+l*31+"\""
+l*63+"\""+l*31+"\"++s++"+l*31+"\""+l*63+"\""+l*31+"\")(unfoldr t s);t[]=Nothing;
t s=Just(splitAt(if length s>w&&s!!w=='"+l*31+"\"'then 501else w)s);w=500;f 0=Not
hing;f x=Just((if x`mod`2>0then '0'else '1'),x`div`2);g x= reverse (unfoldr f x);
h p c=let d=ord c-48in(d,replicate(abs(p-d))(if d<p then '<'else '>')++"+l*31+"\"
."+l*31+"\");s="+l*31+"\"# ruby"+l*32+"n"+l*31+"\"++"+l*31+"\"l=92.chr;eval s=\"+
(z=l*31)+\"\\\"\"+s+z+\"\\\""+l*31+"\"++"+l*31+"\""+l*32+"n"+l*31+"\""+l*15+"\""+
l*7+"\")"+l*4+"n\\\\\\\")\\\")\"########### (c) Yusuke Endoh, 2009 ###########\n"


Quellcode

1
2
3
4
5
6
7
8
9
10
11
$ ruby QuineRelay.rb > QuineRelay.py
$ python QuineRelay.py > QuineRelay.pl
$ perl QuineRelay.pl > QuineRelay.lua
$ lua QuineRelay.lua > QuineRelay.ml
$ ocaml QuineRelay.ml > QuineRelay.hs
$ runghc QuineRelay.hs > QuineRelay.c
$ gcc -Wall -o QuineRelay QuineRelay.c && ./QuineRelay > QuineRelay.java
$ javac QuineRelay.java && java QuineRelay > QuineRelay.bf
$ beef QuineRelay.bf > QuineRelay.ws
$ wspace QuineRelay.ws > QuineRelay.unl
$ unlambda QuineRelay.unl > QuineRelay2.rb


Quellcode

1
$ diff QuineRelay.rb QuineRelay2.rb


http://d.hatena.ne.jp/ku-ma-me/20090916/p1

Tatsächlich wird dieser Code hier oben nicht korrekt funktionieren, da der Filter das Wort Brainfu**k blockiert ;(

rnlf

Frischling

Beiträge: 85

Beruf: Softwareingenieur Raumfahrt

  • Private Nachricht senden

242

14.05.2013, 08:45

Umso beeindruckender, dass es sogar durch vier (!) esoterische Sprachen arbeitet :thumbsup:

Swoerm

Alter Hase

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

243

14.05.2013, 13:05

Wenn ein Codeschnipsel den Titel WTF verdient dann dieser!

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

244

17.05.2013, 18:24

Da hatte ich grad so einen richtig schönen Facepalm Moment. Wunder mich warum mein Programm so unglaublich langsam läuft und ich unendlich wenig FPS bekomme. Dann fällt mir nach knapp 1 1/2 Tagen auf, dass die Framerate höher ist, sobald ich Tasten drücke;) Und siehe da:D Hauptsache ich gehe erst mal mit einem Profiler dran;)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void Main::Run()
{
    clock.restart();
    while(window.isOpen())
    {
        sf::Event event;
        while(window.pollEvent(event))
        {
            if(event.type == sf::Event::Closed)
            {
                window.close();
            }

            sf::Time elapsedTime = clock.restart();

            stateManager.Update(elapsedTime);

            window.clear();

            stateManager.Render(elapsedTime, window);

            window.display();
        }
    }
}


Falls es nicht auffällt,

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
sf::Time elapsedTime = clock.restart();

stateManager.Update(elapsedTime);

window.clear();

stateManager.Render(elapsedTime, window);

window.display();

gehört natürlich nicht in die Eventschleife sondern dahinter.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

245

17.05.2013, 20:07

C#-Quelltext

1
2
3
4
5
6
7
8
9
 log.info "Read task" 
        
        log.info params.id
        
        long taskId = params.id
        Long x = params.id
        long userId = session.user.id
        
        log.info "taskId(${taskId} / ${params.id} / ${x}) userId(${userId})" 


Bin gerade am verzweifeln ;)... weil ich einfach nicht sehe wie mich der Groovy/Grails Code der am Anfang eines Controllers steht die ganze Zeit von hinten bumst. Rufe ich die Seite mit Id 1 auf bekomme ich folgende Ausgabe:

Zitat

ittutorium.TaskController Read task
ittutorium.TaskController 1
ittutorium.TaskController taskId(49 / 1 / 49) userId(1)

Wenn ich die Seite mit Id 2 aufrufe bekomme ich 50 anstatt 49 ?!
Wenn ich schreibe "Long x = new Long(params.id)" dann stimmt der X Wert auch. Was hab ich an Groovy / Grails nicht verstanden, dass sich das Programm so verhält ? Muss was ganz dummes sein ;)

Etwas anderes: Zwar kein Code aber ein tolles Ergebnis. Beim vergleich zweier Fußball Manschaften bekam ich folgendes Ergebnis: Team1: NaN / Team2: -Infinity. Danach war ich schlauer ;)

246

19.05.2013, 17:56

Ich liebe die ungarische Notation:

C-/C++-Quelltext

1
unsigned int unProcessed;
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

247

20.05.2013, 20:09

C-/C++-Quelltext

1
2
3
for (short y=grid.y;y<grid.y;y++) {
//do something
}


Und ich hab mich die ganze Zeit gewundert dass es nur funktioniert wenn ich die Schleife wegnehme...

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

248

20.05.2013, 20:52

"WTF" erscheint mir im ersten Augenblick hauptsächlich der "short"-Datentyp der hier irgendwie ziemlich fehl am Platz wirkt.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

249

20.05.2013, 20:57

"WTF" erscheint mir im ersten Augenblick hauptsächlich der "short"-Datentyp der hier irgendwie ziemlich fehl am Platz wirkt.

unsigned short? Oder ein int Jünger?
Möglicherweise ist grid aber ein short Vector und könnte auch negativ sein, womit short als Datentyp wiederum Sinn macht.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

250

20.05.2013, 21:24

Zitat

unsigned short? Oder ein int Jünger?

Es geht nicht um signed oder unsigned.
Sondern es geht darum, dass der Code hier gewaltig danach riecht, dass short verwendet wurde ohne einen guten Grund dafür zu haben. Je nachdem was das genau für ein Grid ist, wären hier mit hoher Wahrscheinlichkeit, int, size_t oder (u)int32_t die bessere Wahl. Es sieht alles danach aus, dass Helco dem Trugschluss zum Opfer gefallen ist, dass er mit short Speicherplatz oder gar Rechenzeit sparen könnte. (Was auf den meisten heutigen Prozessorfamilien aber nicht der Fall ist.)

Zitat

Möglicherweise ist grid aber ein short Vector

Wenn du den Inhalt des Vektors meinst, dann verstehe ich nicht welche Auswirkungen das auf den Datentyp des Indexes haben soll.

Werbeanzeige