Deadfish ist eine Scherz- "Programmiersprache" mit vier Befehlen. Da die Esolang-Seite etwas widersprüchlich ist und die Interpreten auf dieser Seite nicht alle genau gleich funktionieren, sollten Sie die folgende Variante implementieren:
Spezifikation
- Es gibt einen Akkumulator mit einer Größe von mindestens 16 Bit, mehr ist zulässig, weniger nicht. Negative Zahlen müssen nicht unterstützt werden. Der Akku ist,
0
wenn das Programm startet. - Es gibt die folgenden zwei Sätze von vier Befehlen, und Ihr Programm muss beide gleichzeitig unterstützen.
Standard Deadfish (XKCD-Variante) Bedeutung ─────────────────────┼──────────────────┼───────── ─────────────────────────── i │ x │ Inkrementspeicher d │ d │ Dekrementspeicher s │ k │ Quadrat (acc = acc * acc) o │ c │ Akkumulator als Zahl ausgeben
- Wenn der Akku nach Ausführung eines Befehls entweder
-1
oder ist256
, muss der Akku auf Null zurückgesetzt werden. Beachten Sie, dass dies kein normaler Umlauf ist. Wenn zum Beispiel der Akku ist20
und ders
Befehl ausgeführt wird, sollte der Akku400
danach sein. Wenn der Akku ist257
und derd
Befehl ausgeführt wird , sollte der Akku in ähnlicher Weise werden0
. - Alle Eingaben, die nicht zu diesen Befehlen gehören, sollten ignoriert werden.
Testprogramme
xiskso
sollte ausgeben0
xiskisc
sollte ausgeben289
I / O
Ihr Programm sollte eine Eingabeaufforderung angezeigt: >>
. Die Eingabeaufforderung muss am Anfang einer neuen Zeile stehen. Anschließend sollte eine Zeile mit Benutzereingaben gelesen und die angegebenen Befehle von links nach rechts ausgeführt werden. Bei der Ausgabe von Zahlen müssen die Zahlen getrennt werden. Das heißt, 12 34
ist in Ordnung, 12,34
ist in Ordnung,
12
34
ist OK, ist es aber 1234
nicht.
Ihr Programm sollte dies in einer Schleife tun, zumindest bis EOF
es erreicht ist.
Beispielsitzung:
>> xiskso
0
>> xiskisc
289
>> ddddo ddddo
285
281
>> ddddo ddddo
277
273
>> dddddddo
266
>> dddddddddo
257
>> do
0
>> do
0
>> io
1
>>
#{STDIN.gets}
funktionieren würde, aber in der Tat funktioniert es nicht.