> <> Ist zwar keine beliebte Sprache, kann aber gut zum Golfen sein und wurde auf dieser Website verwendet. Es wurde von Befunge inspiriert und hat einige Ähnlichkeiten in seiner Anleitung.
Erforderliche Befehle:
> < ^ v
Ändert die Richtung des Befehlszeigers (rechts, links, oben, unten)
/ \ | _ #
. Der Zeiger ändert die Richtung, je nachdem, welche Richtung er bereits hat.
x
Zufällige Richtung.
+ - * , %
Addition, Subtraktion, Multiplikation, Division bzw. Modulo. Wirft A und B vom Stapel und drückt den B-Operator A. Die Division durch 0 löst einen Fehler aus.
0-9 a-f
Schiebt den entsprechenden Wert auf den Stapel. a = 10, ..., f = 15
=
Löscht A und B vom Stapel und drückt 1, wenn B = A, andernfalls 0.
)
Größer als. Wirft A und B vom Stapel und drückt 1, wenn B <A
(
Kleiner als. Entfernt A und B vom Stapel und drückt 1, wenn B> A das
' "
Parsen von Zeichenfolgen aktiviert. Beim Parsen von Zeichenfolgen werden alle gefundenen Zeichen in den Stapel verschoben, bis ein schließendes Anführungszeichen gefunden wird.
!
Überspringt die folgende Anweisung.
?
Überspringt die folgende Anweisung, wenn die Stapelspitze Null ist oder der Stapel leer ist. (Hinweis: Hierdurch wird nichts vom Stapel entfernt!)
:
Dupliziert den obersten Wert auf dem Stapel.
~
Entfernt den obersten Wert vom Stapel.
$
Dreht die oberen 2 Werte des Stapels im Uhrzeigersinn. (zB wenn Ihr Stapel 1,2,3,4 ist, würde dies 1,2,4,3 ergeben) Dreht
@
die oberen 3 Werte des Stapels im Uhrzeigersinn. (Wenn Ihr Stapel beispielsweise 1,2,3,4 ist, würde dies 1,4,2,3 ergeben.) Entfernt
&
den obersten Wert vom Stapel und legt ihn in der Registrierung ab. Durch erneutes Aufrufen von & wird der Wert in die Registrierung übernommen und wieder auf den Stapel gelegt.
r
Kehrt den Stapel um.
}
Verschiebt den Stapel nach rechts / dreht den gesamten Stapel im Uhrzeigersinn (zB 1,2,3,4 wird zu 4,1,2,3)
{
Verschiebt den Stapel nach links / dreht den gesamten Stapel gegen den Uhrzeigersinn (zB 1,2,3,4) wird 2,3,4,1
g
Pops A und B vom Stapel und verschiebt den Wert bei B, A in die Codebox
p
Pops A, B und C vom Stapel und ändert den Wert bei C, B in A.
o
Pops und Ausgaben als Zeichen
n
Pops und Ausgaben des Werts
i
Nimmt ein Zeichen als Benutzereingabe und schiebt seinen ASCII-Wert zum Stapel.
;
Beendet die Ausführung
Threading muss nicht implementiert werden, aber Sie können, wenn Sie möchten.
Die kürzeste Antwort gewinnt, im Falle eines Gleichstands gewinnt die erste Antwort.
Sie können jede Sprache verwenden und eval ist erlaubt.
Die Datei wird über Befehlszeilenargumente bereitgestellt und hat eine .fish
Erweiterung.
Bei Bedarf können Sie den offiziellen Python-Interpreter als Referenz verwenden. Der Wiki-Artikel von Esolangs enthält weitere Informationen zur Funktionsweise der Sprache sowie einige weitere Beispiele.
Testfälle:
Hallo Welt!
Code:
"Hello World!"r>?o?<;
Ausgabe:
Hello World!
Factorials
Code:
01::nv
:@*:n>84*o$1+
Leistung (bis zu 5):
1 2 6 24 120
quelle
1 2 6 24 120 720 ...
und sollte auch das sein, was der Python-Interpreter ausgibt.l
zum Schieben der Stapellänge. Und so weit ich weiß,?
knallt der Wert.Antworten:
APL (Dyalog) (750)
Da APL nicht wirklich über eine Befehlszeile verfügt, laden Sie diese in einen Arbeitsbereich (dh mit
)ed F
) und führen Sie sie dann wie folgt über die APL-Zeile aus:Es werden keine Fehler behandelt. Das Verhalten von falschem Code ist nicht angegeben. Es kann auch keine Threads ausführen. Wo die Esolang-Seite und die Frage in Konflikt stehen, folgt sie der Frage.
Bearbeiten: Eine etwas besser lesbare Version mit Kommentaren finden Sie hier: https://gist.github.com/anonymous/6428866
quelle
Delphi, 1144
Alle Anweisungen außer den Anweisungen für das Köpfen sind implementiert.
Der eingerückte und kommentierte Code lautet:
Verlauf bearbeiten:
(1306 + 18 = 1324): Fehler in einigen Operationsreihenfolgen behoben (Delphi wertet Argumente in umgekehrter Reihenfolge aus). Auch Fixed Stack Pop (konnte nicht mehr als einmal pro Anweisung Pop).
(1324-33 = 1291): Der Schutz beim Schreiben von Inhalten von einem leeren Stapel wurde entfernt
(1291-56 = 1235): Drehfunktion hinzugefügt, Variablen umbenannt, Anweisungsziffern verringert
(1235-7 = 1228): Umgeordnete Variablen, Fehler in '@' behoben
(1228-37 = 1191): Mehr Implementierungscode durch Verteilen auf 3 aufeinanderfolgende Fallblöcke
(1191-12 = 1179): Die Stack-Cycle-Implementierung wurde jetzt von allen drei Befehlen geteilt.
(1179-20 = 1159): Aufteilung des String-Parsings auf 3 Case-Blocks, entfernte j-Variable, gemeinsame Implementierung
(1159-15 = 1144): Vereinfachtes 'x' durch Ändern in eine der 4 Richtungsanweisungen
quelle
for k in TFile.ReadAllLines(ParamStr(1))do c:=c+k+StringOfChar(' ',80-Length(k));
. Sie können das auch loswerdenf:TextFile
, müssen es aber zuuses IOUtils;
Beginn hinzufügen . Unterschied: Es werden alle Zeilen und nicht nur die ersten 25 Zeilen gelesen.Haskell 1428
Fast alle Kleinbuchstaben werden als Funktionsnamen verwendet.
PS Gibt es ein Spiel über diese Art (2d Pointer) Esolangs? Sie müssen sehr amüsant sein!
Ein Beispiel für ein Fischprogramm
quelle
zip(['0'..'9']++['a'..'f'])[0..15]
dass es anstelle von verwendet werden solltezip['0'..'9'][0..9]++zip['a'..'f'][10..15]
. Was für ein tolles Golf!\q->t$(r q)q
ist im Grunder>>=t
Python, 978
980981Unterstützt kein Threading.
Versionen:
1. 981
2. 980: Feste
p
Anweisung; kleine Verbesserung.3. 978: Feste
?
Anweisung.quelle
p
precedure hier, weil ich das nicht ganz verstanden habe> Pops A, B und C vom Stapelp
Befehl nimmt die letzten drei Werte auf dem Stapel (Pop sie),a
b
undc
, und weist den Ortc
,b
auf dem Gitter zua
. Aus diesem Grund können Sie nicht in systemeigenen Code konvertieren.a=pop();b=pop();c=pop()
oderc=pop();b=pop();a=pop()
?a=pop();b=pop();c=pop()
Delphi,
Jahre 1855Jahre 1701Diese Version hat Thread-Unterstützung zu einem erheblichen Preis: Die Version ohne Thread-Unterstützung hat derzeit 1144 Zeichen, sodass die Thread-Unterstützung 557 Zeichen hinzufügt (ca. 50%)!
Beachten Sie, dass diese Implementierung einige Ideen enthält, die meine andere Übermittlung um ein paar Dutzend Zeichen reduzieren (ich werde sie später anwenden).
Mit diesem Code werden das Multithread-Beispiel "Hallo Welt" und die meisten anderen Beispiele fehlerfrei ausgeführt. (Mein Interpreter gibt mir beim Ausführen des 'e'-Beispiels eine Division durch Null aus. Kann jemand dies mit einem anderen> <> Interpreter bestätigen?)
Hier der eingerückte und kommentierte Code:
Verlauf bearbeiten:
(1855-154 = 1701): Alle Ideen aus der Version ohne Thread angewendet
quelle
procedure _.U(v: Int16);
->procedure _.U;
undprocedure _.T(A, b: Int16);
->procedure _.T;
TextFile
kann geschrieben werden alsText
, undAssignFile()
alsAssign()
PHP, 2493 Bytes
Ich weiß, dass es mit einer kleineren Compilergröße in anderen Sprachen implementiert wurde, aber dennoch habe ich mit dem Geist eines Programmierers, der niemals sagt, einen PHP-CLI-Interpreter für entwickelt
><> Fish
. Der gesamte Quellcode ist unten.2 Hauptmerkmal der Programmiersprache Fish wurde nicht implementiert, nämlich:
i
eines Zeichens. In PHP CLI muss der Benutzer die<Enter>
Taste drücken , um Eingaben in den Eingabepuffer einzugeben.Beachten Sie, dass ich viele der nativen Funktionen geschrieben und optimiert habe, einschließlich der Erstellung von Arrays mithilfe von:
anstatt
Auf das Programm kann über die Befehlszeilenschnittstelle (CLI) mit dem folgenden Befehl zugegriffen werden:
Ich habe insgesamt 6 Stunden damit verbracht, dies unter Bezugnahme auf den ursprünglichen Python-Interpreter zu vollenden.
Originalquelle:
Verlauf bearbeiten
x
Syntax wurde dahingehend geändert , dass eine der Richtungen ausgewählt wird, anstatt sie einzeln auszuwählen.p
Befehlchr()
, der verwendet werden sollte, bevor der Wert in das Code-Feld geschrieben wird, wurde behoben.quelle
Lua 1640 (1558 ohne Gewinde) Zeichen
Threading-Version, Golf (1640 Zeichen):
Die Threading-Version führt einige unangenehme Hacks mit setfenv und getfenv durch, um die Notwendigkeit der Indizierung für die verschiedenen Threads zu beseitigen.
Threading-Version lesbar:
Nicht-Threading-Version, Golf (1558 Zeichen, kann aber ein bisschen mehr geschrumpft werden, wenn die Nicht-Threading-Version das Kriterium sein soll):
Lesbare Version:
Das nächste nicht als Ergebnis zu setzen, da die Komprimierung direkt verwendet wird, ist wohl nicht das Ziel;). Verwenden von murgaLua (oder einer beliebigen Lua-Version mit lzlib und luaSocket (für die Base64-Dekodierung)) bei der magischen Zählung von 1333:
quelle