** Brainfuck Interpreter Contest ** [abgeschlossen]


  • Administrator

    Ich hab dich mal angepinnt. Hoffentlich wird es was.

    Grüssli



  • Hätte große Lust, aber derzeit bin ich leider zu zugedeckt um mitzumachen 😞 Viel Erfolg an die Teilnehmer, zeigt was ihr könnt 👍

    MfG SideWinder



  • Jetzt habe ich hier editiert statt zu zitieren. Oh bin ich neben der Spur...



  • hustbaer schrieb:

    "Standard" Brainfuck Befehlssatz, also

    ><+-.,[]
    

    Folgendes Interface wird vom Testsystem bereitgestellt:

    // Im golbalen Namespace 
    interface S/*ystem*/
    {
        string P/*rogram*/ { get; }  // Das Programm (der Source-Code)
        int R/*ead*/();              // Liest ein Input-Zeichen
        void W/*rite*/(int ch);      // Schreibt ein Output-Zeichen
    }
    

    Das Testsystem instanziert diese Klasse mit dem Default-Konstruktor, und ruft dann die Funktion R() auf.

    Also bei "." ruft man W/*rite*/ und bei "," R/*ead*/ auf?
    Warum ruft das Testsystem dann von sich aus R auf? 😕



  • edit: Auch verlesen. Dürfte wohl mehr Betriebsblindheit gewesen sein ... 🙂



  • Achsooo... sorry verlesen.

    Wie auch immer: Der erste Interpreter läuft fehlerfrei nach 15 minuten arbeit. Ich liebe Brainfuck 😃



  • @Dravere:
    Danke 🙂

    @SideWinder & µ:
    Also von mir aus können wir das ganze gerne verlängern, z.B. auch auf 14 Tage. Regeländerungen sind ja noch erlaubt 🙂

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

    Wer für/gegen eine Verlängerung ist einfach mit einem +1/-1 Beitrag abstimmen, danke 🙂



  • Von meiner Seite aus ist eine Verlängerung nicht mehr notwendig.



  • 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.


Anmelden zum Antworten