** Brainfuck Interpreter Contest ** [abgeschlossen]
-
Rhombicosidodecahedron schrieb:
Also falls ihr mehr als 7 mal
int
verwendet, ist es kürzer Einmal am Anfang
using i=Int32;
zu schreiben und stattdessen wie beitypedef
'si
zu nehmen.Man schreibt genau 2 mal
int
. Oder macht das jemand anders?
-
Zweimal, ja
-
Ich komme an euch leider auch nicht so wirklich ran. Schließlich liege ich bei 366 Zeichen. Und ihr habt auch die gesamte Klasse gezählt? Na ja, vielleicht fällt mir ja noch was ein.
-
Ja, alles: class I {...}
Und using-Direktiven davor, falls benötigt.Schau Dir mal eine Referenz der C# Schlüsselwörter und Operatoren an. Das hilft um auf gute Ideen zu kommen. Auch die Operatorpräzedenzen. Zum Beispiel sind (x+y)/2 und x+y>>1 gleich. Letzteres hat aber ein Zeichen weniger.
-
UPDATE
Änderungen/Klarstellungen zu den Regeln:
- Die Funktion "R" darf nun offiziell weitere optionale Parameter haben. Beim Aufruf werden die Default-Werte für diese Parameter übergeben.
- Der Interpreter muss eine Schleifen-Verschachtelungstiefe von min. 1024 unterstützen.
Und es gibt ein neues Testsystem:
http://www.c-plusplus.net/forum/p2113680#2113680
Der fehlerhafte CellValues4 Test wurde korrigiert.
Eine Klasse "VerifyingInterpreter" ist dazugekommen, die als Interpreter funktioniert, und während der Ausführung des Programms überprüft, ob das Programm nicht etwas macht was als "UB" definiert wurde.
Und das neue Testsystem kann nun Interpreter mit optionalen Parametern aufrufen.
-
100 Daumen hoch dafür
Würde es gerne testen und einen neuen Interpreter umsetzen, aber ich kämpfe mit meinem neuen PC und bin frustriert. Siehe Technik-Forum.
-
Noch ein Test, der gezielt auf einen bestimmten Programmierfehler prüft.
RunTest("strosoki", "+>+>[<].<.", "", "\x0\x1");
-
µ schrieb:
100 Daumen hoch dafür
Dem schließe ich mich an. Echt top was du an Zeit und Aufwand in das Test-System steckst
-
Ja, wirklich sehr schön
Mein Interpreter schafft auch alle Tests, aber die Codelänge ist leider noch immer nicht konkurrenzfähig
-
All 40 tests passed. (Neues Testsystem) Aber noch 290 Zeichen mit meiner rekursiven Lösung...
-
Hmm. Wenn man den Stack simuliert, z.B. am Ende des verlängerten Bandes anhängt, kommt man auch kaum unter 260.
-
volkard@woanders schrieb:
Noch ein Test, der gezielt auf einen bestimmten Programmierfehler prüft.
RunTest("strosoki", "+>+>[<].<.", "", "\x0\x1");
OK, ist eingebaut.
http://www.c-plusplus.net/forum/p2113680#2113680
Aber WTF heisst "strosoki"?
-
Interpreter_9_1252.cs, 220 Zeichen
SHA-256 = d9db159a97e07e6284ad455cc66d52c591cbbe59ba467098240d559df69d0eb2
-
hustbaer schrieb:
Aber WTF heisst "strosoki"?
Nach http://stackoverflow.com/questions/3198615/wrote-a-quick-and-dirty-brainfuck-interpreter-what-could-i-do-better dem Quick&Dirty-BFI, der zwar nette Kommentare schrieb, aber einfach falsch war, StormianRootSolver-Killer.
-
Ah. Hihi. OK
-
Achjeh, schon wieder was übersehen. 219 geht noch. Modifikation ausgehend von Interpreter 9 trivial, daher spar' ich mir mal den ollen SHA.
-
hustbaer schrieb:
Sämtliche anderen Zeichen werden vom Interpreter ignoriert (d.h. z.B. auch '\0')
Nur um nochmal sicherzugehen: Dh, wir sind nicht auf 128 ASCII beschränkt?
-
KasF schrieb:
hustbaer schrieb:
Sämtliche anderen Zeichen werden vom Interpreter ignoriert (d.h. z.B. auch '\0')
Nur um nochmal sicherzugehen: Dh, wir sind nicht auf 128 ASCII beschränkt?
Das Programm-Alphabet ist UTF-16, also 0 bis 0xFFFF.
Sind auch ein paar Tests in der Testsammlung enthalten die das überprüfen - oder wenigstens versuchen es zu überprüfen.
----
Input wäre ebenso UTF-16, wird aber aufgrund der zu geringen Zellen Zellenwertbereichsforderung auf 0 ... 0x7FFF beschränkt.
-
Ich bin jetzt bei 280 Zeichen angelangt und damit schon eher zufrieden
So langsam gehen mir aber die Ideen aus.
Meine Codeverküzung basiert letztendlich aber auch nur auf meinen Algorithmus, den ich verändert habe, um Code zu sparen. Irgendwelche speziellen Sprachmittel hab ich nicht verwendet. Dafür benutze ich C# aber auch zu selten
-
stuck at 280 :-\