** Brainfuck Interpreter Contest ** [abgeschlossen]



  • 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
    


  • Bin bei 250



  • @GPC
    Das Makro killt aber notwendige Leerzeichen. int i = 0 wird zu inti=0;



  • µ schrieb:

    @GPC
    Das Makro killt aber notwendige Leerzeichen. int i = 0 wird zu inti=0;

    Stimmt, das ist doof. Na ja, das kann man ja leicht anpassen 🙂



  • 248 🤡



  • Test für verschachtelte Schleifen. Quadratzahlen bis 10k. Irgendwo gefunden.

    ++++[>+++++<-]>[<+++++>-]+<+[
    >[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+
    >>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]
    <<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
    

  • Administrator

    GPC schrieb:

    µ schrieb:

    @GPC
    Das Makro killt aber notwendige Leerzeichen. int i = 0 wird zu inti=0;

    Stimmt, das ist doof. Na ja, das kann man ja leicht anpassen 🙂

    Ich habe mir kurz ein hässliches Hilfswerkzeug mit dem Namen Stomp in C# geschrieben. 😃
    Hier der hässliche Algorithmus zum verkleinern:

    string Stomp(string text)
    {
      var regex = new Regex(@"\s+");
    
      text = regex.Replace(text, " ");
      text = text.Replace("\r\n", " ");
      text = text.Replace('\n', ' ');
    
      for(int i = 0; i < text.Length; ++i)
      {
        if(text[i] == ' ' && ((i > 0 && !Char.IsLetter(text[i - 1])) ||
           (i < (text.Length - 1) && !Char.IsLetter(text[i + 1]))))
        {
          text = text.Remove(i, 1);
          --i;
        }
      }
    
      return text;
    }
    

    Funktioniert erstaunlich gut 🙂

    Grüssli



  • hustbaer schrieb:

    Es sollen Brainfuck-Interpreter verglichen werden, und nicht nach Wegen gesucht werden wie man das Testsystem bescheissen kann. Beiträge die versuchen das Testsystem über z.B. Reflection zu bescheissen werden disqualifiziert.
    (Ich könnte natürlich stattdessen das Testsystem soweit absichern dass es nicht mehr möglich ist zu bescheissen, aber das ist mir ehrlich gesagt zu viel Aufwand.)

    🙂



  • µ schrieb:

    Ich stehe noch bei 267.

    😮 😮 😮
    Ich hab's auch mal probiert. Ich stehe bei 462.


Anmelden zum Antworten