** Brainfuck Interpreter Contest ** [abgeschlossen]



  • hustbaer schrieb:

    µ schrieb:

    @hustbaer
    Hast Du mal geprüft ob deine 227 den Anforderungen stand hält? Speziell auch das kleine Programm in diesem Beitrag: http://www.c-plusplus.net/forum/p2116925#2116925

    Nein.
    Werde ich aber natürlich noch.

    Hmpf.
    Kackt natürlich ab.

    Aber was solls.
    +1 (fix)
    -2 (weil's sonst fad wird)
    macht

    Interpreter_8_1252.cs, 226 Zeichen

    SHA-256 = 8f307069b911c7225c5bc67e6c64ac218662f27f56d66272deabcfe18db0a3cc




  • Und wie sieht's bei dir mit den neuen Tests aus?

    BTW: deinen kleinen "1" Test schafft natürlich auch mein "falscher" 227er. Nur einen meiner neuen Test-Cases nicht 🤡



  • Vielleicht könnten nochmal alle Teilnehmer schreiben was sie als minimal geforderte Schleifen-Schachteltiefe haben wollen (ohne lange Diskussionen wenn möglich 🤡 ). Dann kann ich mich nach der Mehrheit richten, und passe die Beschreibung + die Tests entsprechend an.



  • hustbaer schrieb:


    Und wie sieht's bei dir mit den neuen Tests aus?

    BTW: deinen kleinen "1" Test schafft natürlich auch mein "falscher" 227er. Nur einen meiner neuen Test-Cases nicht 🤡

    228 schrieb:

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

    Danke für das tolle Testsystem 👍



  • RunTest("Squares",
                        @"++++[>+++++<-]>[<+++++>-]+<+[
                          >[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+
                          >>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]
                          <<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]", 
                        "", 
                        Enumerable.Range(0, 101).Select(i => (i * i).ToString()).Aggregate((a, b) => a + "\n" + b) + "\n");
    


  • AAh Du hast auch den Bf-Bf-Interpreter eingebaut. Sehr fein. 🙂



  • hustbaer schrieb:

    Vielleicht könnten nochmal alle Teilnehmer schreiben was sie als minimal geforderte Schleifen-Schachteltiefe haben wollen

    Es ist mir zwar eigentlich egal, aber ich hätte lieber irgendwas, das den Stack rekursiver Lösungen nicht sprengt, also von mir aus 10000 oder so.



  • @hustbaer:
    Könnten wir vielleicht auch erlauben, dass die R-Methode eines Interpreters neben dem obligatorischen, ersten System-Parameter noch weiter optionale Parameter haben kann?
    Man müsste das Testsystem dann etwas ändern und nicht nur ein new() constraint sondern auch ein : I - constraint haben. Dann müssten wir uns eben darauf einigen, dass alle unsere Interpreter "I" heißen.. wobei das vermutlich eh schon so ist.
    Edit: Nicht das einer denkt das würde mich in Führung katapultieren.. selbst mit dieser Änderung hätte meine rekursive Idee noch 290 Zeichen. Ich glaube auch nicht, dass man das rekursiv so kurz gelöst bekommt wie iterativ.



  • "All 42 tests passed. ", aber leider noch bei 311 305 :-\ und Rekursionstiefe kann ruhig auf 256 gesetzt werden.



  • Mir ist noch eine kleine Ungereimtheit in den Regeln aufgefallen.

    Zellen = 16 bit signed
    Programm = 16 bit unsigned (char halt)
    IO = 16 bit unsigned (char), kann daher min. geforderte Range für Zellen sprengen

    Sollen wir die UTF-16 Werte vom Programm und IO sign-extenden? Dann hätten wir überall 16 bit signed und gut.
    Oder nur IO?



  • @GPC
    Ich check gar nix.
    Optionale Parameter? Gibt doch in C# nicht, oder hab ich da was verpasst?
    Kannst du mal in 1-2 Zeilen zeigen was du meinst?

    Ansonsten... solche Änderungen möchte ich eigentlich nicht unbedingt machen denke ich.



  • Seit 4.0 gibt es optionale Parameter, hauptsächlich für leichteres COM-Interop.



  • Und über Reflection sind die nicht optional?



  • hustbaer schrieb:

    Zellen = 16 bit signed
    Programm = 16 bit unsigned (char halt)
    IO = 16 bit unsigned (char), kann daher min. geforderte Range für Zellen sprengen

    Sollen wir die UTF-16 Werte vom Programm und IO sign-extenden? Dann hätten wir überall 16 bit signed und gut.
    Oder nur IO?

    Kannst du das Problem und deine Lösung erklären?



  • @TyRoXx:
    Hö? Hab ich doch.

    IO verwendet UTF-16, also Werte von 0 bis 65535.
    Gefordert wurde eine Implementierung die in Zellen den Wertebereich -32768 ... 32767 unterstützen muss.
    Das passt doch nicht zusammen.

    Mit der Definition wäre es möglich, dass ein Programm einen Wert liest, der gar kein gültiger Zellenwert mehr ist.



  • 221



  • 228 weigert sich kleiner zu werden. 😡



  • Geht es bei dem Contest wirklich darum auf Biegen und Brechen den kompaktesten Code zu erstellen?
    Auch wenn die Lesbarkeit drunter Leidet?
    Ich finde das falsch, Die Länge des Codes ist eigentlich das uninteressanteste an Codes, Eleganz, Erweiterbarkeit und Lösungsansätze sind da viel angemessener.

    (Ich mache zwar nicht mit, aber lese hier hin und wieder und wunderte mich schon mehrfach das die Länge scheinbar das Wichtigste ist)



  • hustbaer schrieb:

    Und über Reflection sind die nicht optional?

    Ne, eben nicht. Die Vorgabe nur ein Parameter beißt sich aber eh mit "Die genaue Signatur der Funktion ist dabei nicht vorgeschrieben" :p



  • David W schrieb:

    Geht es bei dem Contest wirklich darum auf Biegen und Brechen den kompaktesten Code zu erstellen?
    Auch wenn die Lesbarkeit drunter Leidet?

    Bei 221 Zeichen leidet die Lesbarkeit schon lange nicht mehr 😃
    Davon abgesehen: 1. finde ich es angemessen, dass ein BF-Interpreter selbst aussieht wie BF, 2. wurde BF mit dem expliziten Ziel entwickelt, möglichst kleine Compiler zu ermöglichen.


Anmelden zum Antworten