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,
0wenn 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
-1oder ist256, muss der Akku auf Null zurückgesetzt werden. Beachten Sie, dass dies kein normaler Umlauf ist. Wenn zum Beispiel der Akku ist20und dersBefehl ausgeführt wird, sollte der Akku400danach sein. Wenn der Akku ist257und derdBefehl ausgeführt wird , sollte der Akku in ähnlicher Weise werden0. - Alle Eingaben, die nicht zu diesen Befehlen gehören, sollten ignoriert werden.
Testprogramme
xisksosollte ausgeben0xiskiscsollte 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 34ist in Ordnung, 12,34ist in Ordnung,
12
34
ist OK, ist es aber 1234nicht.
Ihr Programm sollte dies in einer Schleife tun, zumindest bis EOFes 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.