** Brainfuck Interpreter Contest ** [abgeschlossen]



  • Was genau verstehst du unter "Interpreter"? Ist das gemeint wie "kein Compiler" oder einfach allgemein als eine Implementation der Sprache?


  • Administrator

    +1 für die Verlängerung auf 14 Tage.

    Oder ich mache definitiv nicht mit 🙂
    Meine Chancen zu Gewinnen dürften aber sowieso klein sein. Ich habe einen Hang zu langen Code zu schreiben 😃

    Grüssli



  • @Bashar:
    Mit "Interpreter" ist einfach eine Implementierung gemeint.

    Voraussetzung ist allerdings, dass die Funktion "R" so implementiert wird, dass sie das Programm auch gleich ausführt. Ob sie dazu erstmal IL Code erzeugt, den dann lädt und ausführt, oder das Programm klassisch "interpretiert", ist egal.

    Ich gehe zwar davon aus, dass eine compilierende Implementierung sowieso keine Chance hat zu gewinnen, sehe aber keinen Grund sowas zu verbieten.

    Ich werden heute Abend/Nacht noch den ersten Beitrag entsprechend anpassen.

    Ebenso werd' ich noch ein Paar Beispiele reinschreiben was nicht erlaubt ist. z.B. das Referenzieren/Verwenden von externen Programmen oder Daten, sei's nun über's lokale File-System oder über's Netzwerk. (Das Erzeugen von neuen Files wäre dagegen erlaubt, wobei ich auch davon ausgehe dass eine Implementierung die mit Files rummacht wohl keine Chancen haben wird)



  • Ich werde übrigens selbst auch mitmachen.
    Fairerweise sollte das wohl ausser Konkurrenz sein, da die Regeln ja von mir aufgestellt wurden 🙂



  • @hustbaer
    Von mir aus kannst Du in Konkurrenz teilnehmen.

    Ich bin eigentlich fertig und wüsste gerade nicht, wo ich noch Zeichen sparen kann. Der Code sieht aus wie Sau 🙂



  • Nochmal dazu:

    Sämtliche Whitespaces (Spaces, Tabs, Newlines etc.) werden mitgezählt.

    Das ist die einzige Regel die ich etwas unsinnig finde. Sie zwingt einen dazu am Ende alles in eine Zeile zu pressen.
    Könnte man die Whitespaces nicht einfach bei der Zählung ignorieren, um wenigstens etwas Struktur in den Code zu kriegen?



  • µ schrieb:

    Sämtliche Whitespaces (Spaces, Tabs, Newlines etc.) werden mitgezählt.

    Das ist die einzige Regel die ich etwas unsinnig finde. Sie zwingt einen dazu am Ende alles in eine Zeile zu pressen.
    Könnte man die Whitespaces nicht einfach bei der Zählung ignorieren, um wenigstens etwas Struktur in den Code zu kriegen?

    Naja, ich sehe keine sinnvolle Alternative.

    Auch sehe ich den Sinn dahinter nicht.
    Ohne automatisches Zähl-Tool hätte es wohl kaum einen Sinn, denn wenn man mit Hand zählen muss, ist die schnellste Möglichkeit immer noch alle unnötigen Whitespaces zu eliminieren und dann auf die Zeilenlänge(n) zu gucken.

    ----

    Ich fände es allerdings gut, wenn die Teilnehmer ihren Code 1x in "Bewertungsform" und 1x zusätzlich hübsch formatiert und vor allem mit Kommentaren abgeben, damit man einfacher versteht was abgeht. Auch gerne inklusive Erklärung wie man auf ein spezielles Konstrukt gekommen ist etc.


  • Administrator

    Ehm, müssen alle Fragen zum Contest öffentlich gestellt werden?
    *Angst hat seine Idee zu verraten* 😃

    Grüssli



  • Dravere schrieb:

    Ehm, müssen alle Fragen zum Contest öffentlich gestellt werden?
    *Angst hat seine Idee zu verraten* 😃

    Natürlich nicht. Jeder der Fragen hat kann mir auch gerne eine Mail über's Forum schicken oder über die Email Adresse im 1. Beitrag. Ich verspreche diese Mails auf jeden Fall nicht vor Ende des Contests zu veröffentlichen, und auch danach nicht ohne guten Grund (Drohungen, gröbere Beschimpfungen, jemand braucht ein Alibi 😃 etc.).

    Wenn es darum gehen sollte dass jemand etwas ausnutzen möchte, was in den Vorgaben unklar formuliert ist, dann müsst derjenige natürlich damit rechnen dass ich die Vorgaben anpasse bzw. deutlicher formuliere. Was dann natürlich jeder lesen kann.

    Wobei ich versuchen kann eine Formulierung zu finden, die den "Trick" nicht verrät wegen dem die Frage aufgekommen ist.

    ---------------

    Was ich gleich vorwegnehmen kann: das Testsystem wird zur Bewertung noch modifiziert, und zwar in folgender Weise:

    1. Eventuell neue Test-Cases, die nicht vor Ende des Contest bekanntgegeben werden.
    2. Zumindest der Name des Namespace in dem das Testsystem liegt wird angepasst.
      Sinn: es sollen Brainfuck-Implementierungen verglichen werden, und nicht Programme die über Reflection/... versuchen das Testsystem zu bescheissen. 🙂

    Werde ich auch noch im Kopfbeitrag updaten vor dem offiziellen Start.



  • UPDATE

    Es gibt zwei Änderungen:

    1. Ende bis 17. September verlängert. Beim eher mässigen Anklang den der Contest bisher gefunden hat, will ich auch nicht auf "nur" 1-2 zusätzliche Teilnehmer verzichten.
    2. Die genaue Signatur von "I.R" ist nicht mehr vorgeschrieben.

    Der Kopfbeitrag wurde entsprechend angepasst. Weiters hab' ich zwecks Übersichtlichkeit ein wenig umformatiert, und ein paar Unklarheiten beseitigt.

    Ein neues Testsystem gibt es auch:

    http://ideone.com/NkEMJ

    Das neue Testsystem enthält aber keine wesentlichen Änderungen, bloss ein paar zusätzliche Checks in der RunTest Funktion: Exceptions aus "I.R" werden kontrolliert gefangen und als Fehler gewertet, und es wird erstmal gecheckt ob überhaupt eine passende Funktion "R" gefunden wurde, bevor diese "invoked" wird. Also kein Grund zur Panik.



  • Achja, ich kann natürlich nicht gut etwas "mir selbst einreichen", nachdem ich schon andere Beiträge bekommen habe. Das wäre nicht so wirklich ganz fair 😃

    Daher werde ich mit meinem aktuellen Stand teilnehmen (bzw. falls ich bis Sonntag Abend noch was krüzeres hinbekomme dann damit).

    Interpreter_1_1252.cs (Source in Codepage 1252):

    SHA-256 = 9bda27b6d64fb9032ac3db270b0101d49424e1251ce332495fca1ea484421e5c
    Länge verrate ich natürlich noch nicht 🙂

    http://www.webutils.pl/index.php?idx=sha1
    http://www.xorbin.com/tools/sha256-hash-calculator



  • Folgender Vorschlag: Veröffentliche stets eine anonymisierte Liste der Längen bisher eingereichter Codes, und erlaube jedem Spieler, dass er unbegrenzt nachgebesserte Lösungen einreicht.

    Ich würde damit gern mehr Aktivität erreichen. Wenn man sieht, dass die eigene Lösung nicht die beste ist kann man weiter kürzen. Ansonsten wird jeder kurz vor Abgabe seine Lösung einreichen und es passiert sonst nicht viel. Ich habe jetzt schon nichts mehr zu tun, würde mich aber wieder dran setzen wenn ich sähe, dass jemand etwas kürzeres gebaut hat.

    Da setzt ein gewisses Fairplay voraus, s.d. niemand der die kürzeste Lösung in der Hand hat, bis 23:59 wartet.



  • 🙂

    Running tests on interpreter 'I'...

    Running test Empty... PASSED.
    Running test Null... PASSED.
    Running test SingleNewline... PASSED.
    Running test ExitByLoopStart1... PASSED.
    Running test ExitByLoopStart2... PASSED.
    Running test ExitByLoopStart3... PASSED.
    Running test ExitByLoopEnd1... PASSED.
    Running test ExitByLoopEnd2... PASSED.
    Running test HelloWorld... PASSED.
    Running test Primes1... PASSED.
    Running test Primes5... PASSED.
    Running test Primes15... PASSED.
    Running test Primes30... PASSED.

    Results for interpreter 'I':
    All 13 tests passed.
    Nice 🙂



  • Und schon ist es passiert, jemand hat was eingereicht. Ich hätte dazuschreiben sollen "bitte nicht vor dem offiziellen Start einreichen!". Hätte ich auch, wenn ich dran gedacht hätte.

    Damit ist meine Chance dahin unbefangen bis Sonntag Abend weiterzutüfteln. Naja OK, auch kein Beinbruch.



  • Interpreter_2_1252.cs (noch unbefangen):

    SHA-256 = 5eb32307b9ad38054d0e4bb87974b4b8797ba309780617acd46d6e81310e5317

    Interpreter_3_1252.cs (2 Tricks abgeguckt):

    SHA-256 = 5f2117f05d1217977bb843f94d574726dad3d034b92dcdf07fccc5efe7f51636



  • µ schrieb:

    Folgender Vorschlag: Veröffentliche stets eine anonymisierte Liste der Längen bisher eingereichter Codes, und erlaube jedem Spieler, dass er unbegrenzt nachgebesserte Lösungen einreicht.

    Ich würde damit gern mehr Aktivität erreichen. Wenn man sieht, dass die eigene Lösung nicht die beste ist kann man weiter kürzen.

    Könnte auch das Gegenteil bewirken: Leute demotivieren, wenn sie sehen dass sie zu weit hinten sind.
    Hmmmm.....


  • Administrator

    hustbaer schrieb:

    µ schrieb:

    Folgender Vorschlag: Veröffentliche stets eine anonymisierte Liste der Längen bisher eingereichter Codes, und erlaube jedem Spieler, dass er unbegrenzt nachgebesserte Lösungen einreicht.

    Ich würde damit gern mehr Aktivität erreichen. Wenn man sieht, dass die eigene Lösung nicht die beste ist kann man weiter kürzen.

    Könnte auch das Gegenteil bewirken: Leute demotivieren, wenn sie sehen dass sie zu weit hinten sind.
    Hmmmm.....

    Also auf Spieleprogrammierer.de sah es eher motivierend aus. Dort wurden während dem Wettbewerb auch aktuelle Resultate von den Teilnehmern selbst veröffentlicht, ohne den Code anzugeben. Das spornt die Leute an, ihre Lösung noch weiter zu optimieren.

    Sonst hat man keine Ahnung, wo man steht. Schreibt etwas, gibt dies ab und der Wettbewerb ist für einem vorbei. Wenn man dagegen sieht, dass jemand etwas besseres hinbekommen hat, dann setzt man sich nochmals an den eigenen Code und probiert ihn nochmals zu optimieren 🙂

    Grüssli



  • Mir soll's Recht sein 🙂

    Dann fang ich gleich mal an...

    Interpreter_2_1252.cs = 254 Zeichen



  • Ich stehe noch bei 267.



  • Ich bin auch bei 267 und sehe kein Land mehr 😞


Anmelden zum Antworten