Einführung
Compute ist eine esoterische Scherzsprache.
Aus dem Esolangs-Eintrag:
Compute hat keine erforderliche Syntax und kann alle Probleme lösen. Es ist klug genug, um jede menschliche Sprache (Englisch, Spanisch, Latein usw.), jede Programmiersprache (C ++, Java, Brainfuck usw.) oder jede Art von Daten zu interpretieren, die Sie sich vorstellen können. Der einzige Nachteil ist, dass es absolut keine E / A gibt.
Einige Beispielprogramme
Hello World
Ein grundlegendes Hello World-Programm
What is love?
Bestimmt war Liebe ist (Baby tut mir nicht weh).
When will we ever graduate?
Bestimmt das genaue Datum dieser Site, um die Beta zu verlassen.
Die Herausforderung
Ihre Aufgabe ist es, einen vollständigen Compute-Interpreter zu schreiben. Das klingt ziemlich schwierig, aber denken Sie daran, dass Compute absolut keine E / A hat. Ihr Interpreter schläft also nur eine Sekunde für jede Zeile im Eingabeprogramm und gibt \n\nDone.
danach aus (dies ist die einzige Ausnahme von der No-I / O-Sache).
Den offiziellen Dolmetscher finden Sie unten auf dieser Website .
Beachten Sie, dass der offizielle Interpreter für jedes Zeichen im angegebenen Quellcode eine Sekunde pausiert. Um lange Wartezeiten beim Testen Ihres Dolmetschers mit aussagekräftigen Fragen zu vermeiden, bleiben wir bei dieser Herausforderung auf dem Laufenden.
Regeln
- Die Eingabe kann mehrere Zeilen enthalten, die durch a getrennt sind
\n
. Es wird immer mindestens eine Zeile geben. - Im Gegensatz zur offiziellen Implementierung müssen Sie keine Datei als Eingabe verwenden. Sie können das Compute-Programm in jeder gewünschten Form der Eingabe verwenden.
- Die einzige erlaubte Ausgabe ist
\n\nDone.
. Ein nachfolgender Zeilenumbruch ist zulässig. - Funktion oder volles Programm erlaubt.
- Standardregeln für die Eingabe / Ausgabe.
- Es gelten Standardlücken .
- Dies ist Code-Golf , also gewinnt die niedrigste Byte-Anzahl. Tiebreaker ist eine frühere Einreichung.
quelle
Antworten:
05AB1E ,
16151413 BytesCode:
Erläuterung:
Dieser Teil entspricht
"\n\nDone."
:Probieren Sie es online aus!
Verwendet die CP-1252- Codierung.
quelle
Rede , 117 Bytes
Lassen Sie uns das erklären. Dies gilt zunächst für:
Immer noch verwirrt? Sagen wir es so:
Importiert das Modul
time
.Dies ist eine while-Schleife, deren Zustand ist
input()
.Unser Programm muss jetzt atmen und
inhale
ist zwar weniger gesund, aber Golfspieler.Now
Nehmen Sie das zuletzt importierte Modul und hängen Sie.sleep(1)
es an.Verlassen wir die while-Schleife.
Druckt zwei Zeilenumbrüche.
Beginnt mit der Erfassung einer Zeichenfolge.
Fügt
Done.
der erfassten Zeichenfolge hinzu.Beendet die Erfassung der Zeichenfolge.
quelle
JavaScript Shell REPL, 38 Bytes
Als eine Funktion, die das Programm als Zeichenfolgenargument akzeptiert und das Ergebnis zurückgibt:
29 Bytes, wenn die Funktion ihre Eingabe in Form eines Array von Zeilen akzeptieren kann oder wenn sie 1 Sekunde pro Zeichen schlafen soll:
34 Bytes, wenn es auch eher wie ein Programm sein und explizit drucken soll Fertig:
Dies funktioniert für mich im eigenständigen Spidermonkey-Interpreter.
quelle
Javascript ES6,
4645 BytesVielen Dank an ӍѲꝆΛҐӍΛПҒЦꝆ für das Speichern eines Bytes
Nimmt ein Array als Eingabe an.
Wie sowohl ӍѲꝆΛҐӍΛПҒЦꝆ als auch edc65 gezeigt haben, können Sie Folgendes schreiben, aber es werden keine Bytes gespeichert :
quelle
1e3
ist besser als10e2
.1e3 is better than 10e2
kann nicht glauben, dass ich das verpasst habe.Bash + Coreutils, 28
Schlaf 1 Sekunde für jede Zeile. Verwenden Sie
wc -c
stattdessen für jedes Byte oderwc -m
stattdessen für jedes Zeichen.quelle
Pyth,
1514 Bytes(Sie können es online ausprobieren , aber es macht wirklich keinen Sinn, dies zu tun.)
quelle
Done
(was ziemlich lustig ist, da Sie jemandem dasselbe bei einer anderen Antwort gesagt haben): PPerl, 21 + 1 = 22 Bytes
Benötigt die
-p
Flagge:quelle
Python 3, 58 Bytes
quelle
MATL , 17 Bytes
Eine nachfolgende leere Zeile (gefolgt von einer neuen Zeile) wird verwendet, um das Ende der Eingabe zu markieren. Dies ist in MATL erforderlich, da die Eingabe interaktiv ist und jede Eingabe mit einer neuen Zeile endet.
Probieren Sie es online aus!
quelle
Done
?QBasic, 54 Bytes
Übernimmt das Programm zeilenweise aus Benutzereingaben, die durch eine leere Zeile abgeschlossen werden. Befolgen Sie den Buchstaben des Gesetzes, wenn auch möglicherweise nicht den Geist, indem Sie 1 Sekunde nach dem Lesen jeder Zeile pausieren. (Die Spezifikation besagt technisch nicht, dass alle Pausen nach Abschluss der Eingabe kommen müssen.) Wenn dies als zu zwielichtig angesehen wird, ist hier eine 64-Byte-Version, die nach Eingabe des gesamten Programms pausiert:
Bonusversion mit Datei-E / A (87 Byte):
quelle
Ruby, 32 Bytes
Liest von stdin.
quelle
OCaml, 61 Bytes
Angenommen, die Eingabe ist eine Liste.
quelle
Gelee , 12 Bytes (nicht konkurrierend)
Probieren Sie es online aus!
Hinweis: Bitte schlagen Sie nicht vor, das
⁷⁷
in die komprimierte Zeichenfolge einzufügen, da dies die Länge verlängert (“¡OÑL[Ṁ»
).Erläuterung:
quelle
œS
.awk, 34 Bytes
Da es keine E / A gibt und das Endergebnis unvermeidlich ist, wird der
Done.
Teil gleich zu Beginn ausgegeben.Die einzige Möglichkeit, in awk zu schlafen, ist die Verwendung des Systems
sleep
. Der kürzeste Weg, es aufzurufen, ist zuprint|"sleep "NR
und wir könnten es genauso gut nutzlos missbrauchenprint
.quelle