Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
17
ZUGRIFFE
2846
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.785
    Quiz #3
    BrainScript

    Regeln
    Die Regeln und der Ablauf der Quizrunde können in der entsprechenden Ankündigung eingesehen werden. Bitte lest sie euch aufmerksam durch, da sie alle wichtigen Informationen enthält. Lösungsansätze können und dürfen auch schon vorab untereinander ausgetauscht und diskutiert werden, allerdings nicht öffentlich im Forum. Verwendet stattdessen bitte private Nachrichten oder schaut im Chat vorbei.

    Abgabe
    Die Abgabe erfolgt wie immer im Abgabeforum. Abgabefrist ist Sonntag, der 5. Oktober 2008 um ca. 21 Uhr.

    Das Problem
    Der Suchmaschinenbetreiber Hupf werkelt weiter an seinem revolutionären Browser. Als spezielles Feature soll neben JavaScript auch die Skriptsprache BrainScript angeboten werden. Als inzwischen erfahrener Prototyp-Programmierer ist es nun deine Aufgabe, einen Interpreter für BrainScript zu schreiben.

    Die Syntax und Semantik von BrainScript wurde 1:1 von Brainfuck übernommen. Die "virtuelle Maschine", die der Interpreter simuliert, besteht also aus einer Anzahl linear angeordeter Speicherzellen, die jeweils genau ein (vorzeichenloses) Byte speichern können. Zusätzlich besitzt die Maschine einen Zeiger, der auf die momentan aktive Speicherzelle zeigt. Anfangs zeigt dieser auf die niedrigste (erste) Speicherzelle. Die Zellen selbst sind ursprünglich alle mit dem Wert 0 vorbelegt. BrainScript unterstützt lediglich acht verschiedene Befehle, die durch jeweils ein einzelnes Zeichen repräsentiert werden:
    • + - inkrementiert den Wert der aktiven Zelle
    • - - dekrementiert den Wert der aktiven Zelle
    • > - inkrementiert den Zeiger (die nachfolgende Zelle wird aktiv)
    • < - dekrementiert den Zeiger (die vorhergehende Zelle wird aktiv)
    • . - gibt den Wert der aktuellen Zelle aus (als ASCII-Zeichen)
    • , - liest ein Zeichen ein und speichert den ASCII-Wert in der aktiven Zelle (0 falls das Ende der Eingabe erreicht wurde)
    • [ - springt vor zum dazugehörigen ], falls der Wert der aktiven Zelle 0 ist (ansonsten tue nichts)
    • ] - springt zurück zum dazugehörigen [

    Die letzten beiden Sprungbefehle können dabei beliebig tief "geschachtelt" werden. Alle anderen Zeichen im Programmtext werden vom Interpreter ignoriert (können also z.B. zur Kommentierung verwendet werden).

    Die Anzahl der Speicherzellen soll (klassischerweise) 30.000 betragen. Die Werte in den Zellen sollen das übliche Überlaufverhalten aufzeigen (inkrementieren von 255 ergibt 0, dekrementieren von 0 ergibt 255). Was bei einem Über-/Unterlauf des Zeigers passiert, bleibt euch überlassen.

    Erweiterung
    Erweitert den Interpreter dahingehend, dass die Zellenanzahl nicht mehr fix ist. Erlaubt die Angabe der Anzahl durch den Benutzer (z.B. über einen Kommandozeilenparameter) und/oder die Möglichkeit eines "unendlich" großen Speichers.

    Beispiele
    Programm:
    Code :
    1
    
    ,[.,]
    Eingabe:
    Code :
    1
    
    BrainScript
    Ausgabe:
    Code :
    1
    
    BrainScript


    Programm:
    Code :
    1
    
    ,[>,]<[.<]
    Eingabe:
    Code :
    1
    
    BrainScript
    Ausgabe:
    Code :
    1
    
    tpircSniarB


    Programm:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    [ This program prints Sierpinski triangle on 80-column display. ]
                                    >    
                                   + +    
                                  +   +    
                                 [ < + +    
                                +       +    
                               + +     + +    
                              >   -   ]   >    
                             + + + + + + + +    
                            [               >    
                           + +             + +    
                          <   -           ]   >    
                         > + + >         > > + >    
                        >       >       +       <    
                       < <     < <     < <     < <    
                      <   [   -   [   -   >   +   <    
                     ] > [ - < + > > > . < < ] > > >    
                    [                               [    
                   - >                             + +    
                  +   +                           +   +    
                 + + [ >                         + + + +    
                <       -                       ]       >    
               . <     < [                     - >     + <    
              ]   +   >   [                   -   >   +   +    
             + + + + + + + +                 < < + > ] > . [    
            -               ]               >               ]    
           ] +             < <             < [             - [    
          -   >           +   <           ]   +           >   [    
         - < + >         > > - [         - > + <         ] + + >    
        [       -       <       -       >       ]       <       <    
       < ]     < <     < <     ] +     + +     + +     + +     + +    
      +   .   +   +   +   .   [   -   ]   <   ]   +   +   +   +   +    
     * * * * * M a d e * B y : * N Y Y R I K K I * 2 0 0 2 * * * * *
    Eingabe: irrelevant
    Ausgabe:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
                                    *    
                                   * *    
                                  *   *    
                                 * * * *    
                                *       *    
                               * *     * *    
                              *   *   *   *    
                             * * * * * * * *    
                            *               *    
                           * *             * *    
                          *   *           *   *    
                         * * * *         * * * *    
                        *       *       *       *    
                       * *     * *     * *     * *    
                      *   *   *   *   *   *   *   *    
                     * * * * * * * * * * * * * * * *    
                    *                               *    
                   * *                             * *    
                  *   *                           *   *    
                 * * * *                         * * * *    
                *       *                       *       *    
               * *     * *                     * *     * *    
              *   *   *   *                   *   *   *   *    
             * * * * * * * *                 * * * * * * * *    
            *               *               *               *    
           * *             * *             * *             * *    
          *   *           *   *           *   *           *   *    
         * * * *         * * * *         * * * *         * * * *    
        *       *       *       *       *       *       *       *    
       * *     * *     * *     * *     * *     * *     * *     * *    
      *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *    
     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


    Weitere Beispiele lassen sich leicht mit der Suchmaschine deines Vertrauens aufspüren.
    Geändert von Matthias Reitinger (02.10.08 um 21:10 Uhr)
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”

  2. #2
    kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Das wird den Ollie aber freuen...
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  3. #3
    Avatar von Alexander Schuc
    Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.755
    Übrigens.. im Chat gibts den Channel #coding welcher gerne dafür benutzt werden kann.

    Viel Spass allen.. =)
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  4. #4
    Avatar von Spyke
    Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    1.029
    Ich hab damals schon Brainfuck nicht verstanden
    Aber ma schaun vielleicht krieg ich ja irgendwas hin.

    Das größte Problem ist aber eigentlich, so wirklich versteh ich die Zeiger nicht.
     
    www.iv-interactive.de - Projektewebsite | WikiParser - aktuelles Projekt
    Capoeira: Entre na Roda | Aché Brasil - Paranaue

  5. #5
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.785
    Zitat Zitat von Spyke Beitrag anzeigen
    Das größte Problem ist aber eigentlich, so wirklich versteh ich die Zeiger nicht.
    Lass dich nicht von dem Begriff "Zeiger" abschrecken. In diesem Fall ist das nichts anderes als eine Variable, die die Nummer der aktiven Zelle speichert.
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”

  6. #6
    Avatar von Spyke
    Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    1.029
    Für mich kommt es so vor als wenn
    + und > inkrement
    - und < dekrement
    stehen

    Und unter dem Begriff Zelle muss ich immer zu erst an eine Zelle aus einer Tabelle denken.

    Ich hoffe mal mir fehlt jetzt hier nicht allgemein Basiswissen denn bisher kam ich eigentlich immer klar

    Edit:
    Es ist spät vielleicht kapier ichs morgen besser aber ich denke das hier
    http://de.wikipedia.org/wiki/Turingm...e_Beschreibung
    erklärt ungefähr wie das mit den Zellen gemeint ist.
    Geändert von Spyke (02.10.08 um 21:48 Uhr)
     
    www.iv-interactive.de - Projektewebsite | WikiParser - aktuelles Projekt
    Capoeira: Entre na Roda | Aché Brasil - Paranaue

  7. #7
    OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    457
    Zitat Zitat von kuddeldaddeldu Beitrag anzeigen
    Das wird den Ollie aber freuen...
    *Augenbraunwackel*
    Muss mir nur noch ne Sprache aussuchen... ich hab mal einen in SparcAssembler geschrieben *erinner*

    Ich hab jetzt tatsächlich die ganz Nacht durchgearbeitet... wollte eigentlich lernen... -.- ärgerlich.
    Geändert von OnlyFoo (03.10.08 um 05:57 Uhr)
     

  8. #8
    Avatar von Spyke
    Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    1.029
    theoretisch scheint alles zu funktionieren ich hab blos ein Problem.
    Ich bekomme irgendwie die verdammte Abbruchbedingung für den Block nicht hin.

    Im Prinzip dachte ich mir sowas:
    Code csharp:
    1
    
    while (band[position] != 0)
    Nur das funktioniert so halt nicht.

    Kann mich irgendwer auf den richtigen Weg stupsen.
     
    www.iv-interactive.de - Projektewebsite | WikiParser - aktuelles Projekt
    Capoeira: Entre na Roda | Aché Brasil - Paranaue

  9. #9
    Avatar von Spyke
    Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    1.029
    ok Hauptproblem war ich hatte ausversehen mein Zeiger Ermittlungsquelltext gelöscht (und nicht gemerkt)
     
    www.iv-interactive.de - Projektewebsite | WikiParser - aktuelles Projekt
    Capoeira: Entre na Roda | Aché Brasil - Paranaue

  10. #10
    OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    457
    Meine Lösung ist fertig und eingesand, ich hab ausgeschlfen... jit-compiling rulz... nun kann ich endlich weiter lernen...
    Ich mag das Quiz, es gibt enem immer Ideen, wenn man sonnst nicht wieß, was man machen soll...
     

  11. #11
    Avatar von Spyke
    Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    1.029
    Hab hier nen BF Textadventure gefunden
    http://jonripley.com/i-fiction/games/LostKingdomBF.html

    leider scheint mein Programm nicht ganz kompatibel zu sein
    (oder ich kapier das Spiel nicht )
     
    www.iv-interactive.de - Projektewebsite | WikiParser - aktuelles Projekt
    Capoeira: Entre na Roda | Aché Brasil - Paranaue

  12. #12
    OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    457
    Zitat Zitat von Spyke Beitrag anzeigen
    Hab hier nen BF Textadventure gefunden
    http://jonripley.com/i-fiction/games/LostKingdomBF.html

    leider scheint mein Programm nicht ganz kompatibel zu sein
    (oder ich kapier das Spiel nicht )
    Funktioniert bei mir super... aber leider kann ich keine Textadventures =)
     

  13. #13
    Avatar von Spyke
    Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    1.029
    Bei mir nicht, irgendwas hab ich versemmelt.

    Edit:
    Nu kann ers auch.
    P.S.: Könnte einer der Mods (falls einer Zugriffsrechte hat) die veralteten Dateianhänge entfernen?
    Geändert von Spyke (03.10.08 um 18:28 Uhr)
     
    www.iv-interactive.de - Projektewebsite | WikiParser - aktuelles Projekt
    Capoeira: Entre na Roda | Aché Brasil - Paranaue

  14. #14
    OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    457
    72h sind rum... *wart*
     

  15. #15
    Avatar von Spyke
    Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    1.029
    sinds nicht erst 48
     
    www.iv-interactive.de - Projektewebsite | WikiParser - aktuelles Projekt
    Capoeira: Entre na Roda | Aché Brasil - Paranaue

Thema nicht erledigt
Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Quiz?
    Von MeisterLampion im Forum Office-Anwendungen
    Antworten: 12
    Letzter Beitrag: 03.11.06, 15:48
  2. Quiz: Was bin ich?
    Von MrTwister im Forum Werkstatt
    Antworten: 3
    Letzter Beitrag: 05.04.06, 19:14
  3. Quiz
    Von JannyR im Forum PHP
    Antworten: 2
    Letzter Beitrag: 21.05.05, 15:58
  4. Quiz
    Von alkaline im Forum PHP
    Antworten: 0
    Letzter Beitrag: 27.09.04, 10:16
  5. php Quiz
    Von Sim im Forum PHP
    Antworten: 0
    Letzter Beitrag: 09.05.04, 12:43