Thema: [QUIZ#3] BrainScript
-
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 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:Eingabe:Code :1
,[.,]
Ausgabe:Code :1
BrainScript
Code :1
BrainScript
Programm:Eingabe:Code :1
,[>,]<[.<]
Ausgabe:Code :1
BrainScript
Code :1
tpircSniarB
Programm:Eingabe: irrelevantCode :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 * * * * *
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!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
02.10.08 21:20 #2
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.420
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.
-
02.10.08 21:23 #3
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.729
Ü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.
Klickt oben auf Chat, oder verbindet zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // BlogEngine.net Extensions
-
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.
-
„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!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
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)
-
-
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:
Nur das funktioniert so halt nicht.Code csharp:1
while (band[position] != 0)
Kann mich irgendwer auf den richtigen Weg stupsen.
-
ok Hauptproblem war ich hatte ausversehen mein Zeiger Ermittlungsquelltext gelöscht (und nicht gemerkt)
-
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...
-
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
)
-
-
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)
-
72h sind rum... *wart*
-
sinds nicht erst 48
Ähnliche Themen
-
[QUIZ#1] OnlyFoo (C)
Von OnlyFoo im Forum ArchivAntworten: 0Letzter Beitrag: 19.09.08, 14:51 -
Quiz?
Von MeisterLampion im Forum Office-AnwendungenAntworten: 12Letzter Beitrag: 03.11.06, 15:48 -
Quiz
Von JannyR im Forum PHPAntworten: 2Letzter Beitrag: 21.05.05, 15:58 -
Quiz
Von alkaline im Forum PHPAntworten: 0Letzter Beitrag: 27.09.04, 10:16 -
Chatlog-Quiz
Von Martin Schaefer im Forum Fun-ForumAntworten: 4Letzter Beitrag: 10.02.04, 13:45





Login





Lesezeichen