** Brainfuck Interpreter Contest ** [abgeschlossen]



  • UPDATE:
    Es ist die Frage aufgetaucht ob "unsafe" erlaubt ist.

    So wie ich die Regeln ursprünglich formuliert hatte ("sämtliche C# Features die von Visual C# 2010 (Express) unterstützt werden"), muss es eigentlich erlaubt sein.

    Also jetzt offiziell: "unsafe" ist erlaubt. Das verhindert natürlich eine Demonstration mit ideone.com (zumindest finde ich keine Möglichkeit den nötigen Compiler-Switch mitzugeben - falls jmd. weiss wie das geht bitte hier posten). Vielleicht bringt es aber nochmal etwas Bewegung hier rein, nachdem einige ja schon anstehen.



  • Bringt unsafe denn etwas? Bei meinen Versuchen damit wurde der Code nur länger.



  • @TyRoXx
    Ging mir auch so. unsafe, stackalloc, fixed ... das bringt alles viel Zeichen in den Code. Und das nur im *p statt b[p] zu schreiben.



  • Hmmm... vermutlich bringt "unsafe" doch nix, nein.
    Ich verwende "unsafe" selbst nie, von daher wusste ich z.B. nicht dass man für viele Dinge ja noch "fixed" schreiben muss damit man überhaupt nen Zeiger bekommt...

    Macht nix, ich lass es trotzdem erlaubt.
    Ich hab' ja auch die Verwendung des Frameworks erlaubt, was wohl auch keiner machen wird 🙂



  • Auf den fixed-Zeiger darfst Du dann keine Pointerarithmetik anwenden. Dafür muss man Speicher mit stackalloc reservieren.

    Für Bildverarbeitung ist unsafe ein Segen.

    Macht nix, ich lass es trotzdem erlaubt.
    Ich hab' ja auch die Verwendung des Frameworks erlaubt, was wohl auch keiner machen wird

    Mir fällt nix vom Framework ein was helfen würde. 😞



  • Öh. Hö?
    Man kann den "fixed" Zeiger in einen anderen Zeiger kopieren, und den kann man dann rumschieben.

    Für Bildverarbeitung ist unsafe ein Segen.

    Für Bildverarbeitung verwendet man andere Sprachen 😃



  • Äh, ja (fixed) 🙂

    Bildverarbeitung:
    Nein nein C# ist schon Konkurrenzfähig 🙂



  • Nur so nebenbei: Interpreter_3_1252.cs (das mit zwei von dir abgeguckten Tricks) ist 249 Zeichen lang 🤡



  • hustbaer schrieb:

    Nur so nebenbei: Interpreter_3_1252.cs (das mit zwei von dir abgeguckten Tricks) ist 249 Zeichen lang 🤡

    Schreib mal per PM welche Tricks das waren.

    Und der Contest ist noch lange nicht vorbei! :p



  • @hustbaer
    Ich frage mal ganz dreist: Verwendest Du eine zweite Methode und/oder Rekursion?

    Mit einem rekursiven Ansatz bin ich dem Ziel heute Mittag nicht näher gekommen.



  • µ schrieb:

    @hustbaer
    Ich frage mal ganz dreist: Verwendest Du eine zweite Methode und/oder Rekursion?

    🙂



  • Ok. Hätte mich auch gewundert.

    Lambdas dürfen nicht rekursiv sein 👎



  • PM ist angekommen, oder?



  • Die mit den Tricks. Darauf habe ich geantwortet.
    Sonst keine.


  • Administrator

    Ich habe nachwievor eine Idee mit unsafe, bisher aber gewartet, bis es erlaubt wird. Wenn ich dann mal genügend Zeit finde, werde ich der Idee nachgehen.

    Es ist unglaublich, was für hässlichen aber funktionierenden Code man sogar in C# schreiben kann 😃

    Grüssli



  • µ schrieb:

    Die mit den Tricks. Darauf habe ich geantwortet.
    Sonst keine.

    Ja, die. Sorry, Antwort hatte ich noch nicht gesehen.



  • Dravere schrieb:

    Ich habe nachwievor eine Idee mit unsafe, bisher aber gewartet, bis es erlaubt wird. Wenn ich dann mal genügend Zeit finde, werde ich der Idee nachgehen.

    Ich glaube nach wie vor dass es nix bringen wird, aber vielleicht täusche ich mich ja.

    Es ist unglaublich, was für hässlichen aber funktionierenden Code man sogar in C# schreiben kann 😃

    Hihi, ja.
    Das wahre Ausmass werden wir vermutlich aber erst sehen, wenn die Ergebnisse veröffentlicht werden 🙂



  • Hätte auch nicht gedacht, dass ich ma bool <-> int casts, Komma-Operator und richtigen Präprozessor vermisse 😉



  • µ schrieb:

    Lambdas dürfen nicht rekursiv sein 👎

    Man kann es ein bisschen hinfaken:

    Func<long, long> faculty = null;
    faculty = (n) => n == 1 ? 1 : n * faculty(n - 1);
    

    Es geht auch mit echter Rekursion (und viel Schreibaufwand, daher gerade hier unpraktikabel): http://blogs.msdn.com/b/wesdyer/archive/2007/02/02/anonymous-recursion-in-c.aspx



  • Ich bin bei 253 Zeichen, aber bei den Primzahlen verursache ich 'ne Endlosschleife 😃 /o\ (crappy doppelt verschachtelte bf-schleifen)
    Ist hinfällig, da der Makrocode falsch gezählt hat 🙂 I don't like mondays.

    Edit:
    Btw, wer's noch nicht hat: Ein Makro um die Anzahl zeichen in VS zu bestimmen:

    Option Strict Off
    Option Explicit Off
    Imports System
    Imports EnvDTE
    Imports EnvDTE80
    Imports EnvDTE90
    Imports EnvDTE90a
    Imports EnvDTE100
    Imports System.Diagnostics
    
    Public Module CountNonWhiteSpaceCharacters
        Sub Count()
            Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection()
            Dim text As String = selection.Text
    
            text = text.Replace(" ", "")
            text = text.Replace(vbCrLf, "")
            text = text.Replace(vbTab, "")
    
            MsgBox("Count " + text.Length.ToString())
        End Sub
    End Module
    

Anmelden zum Antworten