Codegolf/RGB2Rv10

From NoName e.V.
Revision as of 18:28, 3 October 2013 by Mxffon (talk | contribs) (Created page with "== Esocalc == Was passiert, wenn man [http://en.wikipedia.org/wiki/Befunge Befunge] mit [http://en.wikipedia.org/wiki/Brainfuck Brainfuck] kreuzt? Brainfunge? Befuck? Zum Gl...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Esocalc

Was passiert, wenn man Befunge mit Brainfuck kreuzt? Brainfunge? Befuck? Zum Glück ist nicht Aufgabe darin zu programmieren, sondern nur einen Interpreter dafür schreiben.

Dieser Fungeoid wurde stark kastriert um die Implementation zu vereinfachen.

Der Programmspeicher ist zweidimensional und auf 80 Zeichen a 25 Linien begrenzt. Newlines am Ende der Zeile werden *nicht* eingefügt. Daten werden auf einem Stack gespeichert, die meisten Operatoren poppen die zwei letzten Elemente und pushen das Ergebnis an das Ende.

Operatoren


0-9	Push this number on the stack
+	Addition: Pop a and b, then push a+b
-	Subtraction: Pop a and b, then push b-a
*	Multiplication: Pop a and b, then push a*b
/	Integer division: Pop a and b, then push b/a, rounded down.
>	Start moving right
<	Start moving left
^	Start moving up
v	Start moving down
_	Pop a value; move right if value=0, left otherwise
|	Pop a value; move down if value=0, up otherwise
.	Pop value and output as an integer
@	End program
(space)	No-op. Does nothing

Programmspeicher

Wie oben erwähnt 80x25 bytes. Der Instruktionszeiger muss nicht wrappen, wenn er am Rand ist, da die Programme darauf nicht testen. Initial ist der Zeiger auf dem ersten Byte und wandert nach rechts.

Beispiel ("pretty printed")

v
2   @
>3+.^

Ausgabe ist "5"

TBC