Jolf ist eine prozedurale Golfsprache von @ CᴏɴᴏʀO'Bʀɪᴇɴ.
Welche Tipps hast du zum Golfen in Jolf?
Bitte posten Sie einen Tipp pro Antwort.
Diese Tipps sollten zumindest etwas spezifisch für Jolf sein, z. B. Kommentare entfernen ist eine Antwort, aber keine sehr gute.
Antworten:
JavaScript fällt zurück
Wenn Jolf aus irgendeinem Grund nicht genug Golf spielt oder einfach nicht damit zurechtkommt, kann es hilfreich sein, JavaScript eval zu verwenden. Dies kann auf zwei Arten geschehen.
1. Entwickelt eval
Alles, was sich innerhalb von
$...$
befindet, wird buchstäblich auf die JS-Transpilation übertragen. Zum Beispiel+3$~$5
transpiles zuadd(3, ~5)
. Äquivalent+3:~5
.2. Array-Auswertung
Sie können JS-Arrays in Jolf verwenden! Meistens. Es ist eine Art Fehler, aber ich werde ihn nicht beheben. Beispielsweise:
Transpiles zu:
quelle
Kennen Sie Ihre automatisch zugewiesenen Variablen!
Jolf hat viele Möglichkeiten, Variablen automatisch zuzuweisen. Der Standardwert ist
γ
, der den Wert des nächsten Ausdrucks annimmt.Β
ist das gleiche, konvertiert aber den nächsten Ausdruck in eine Zahl.Außerdem ist
ζ
(zeta) eine Variable, die mit-1/12
(rate warum) initialisiert und mitΖ
(Zeta) neu zugewiesen werden kann .Angenommen, Sie möchten
I
(die Eingabezeichenfolge) mit einer Operation über sich selbst vergleichen. Mal sehen, obI + I = reverse(I + I)
. Dies wird wie folgt geschrieben:Dies kann jedoch auf Folgendes zurückgeführt werden:
quelle
Verwenden
@
@
ist ein Befehl, der das nächste Zeichen im Quellcode annimmt und den Codepunkt dieses Zeichens zurückgibt. (Gibt beispielsweise@X
88 zurück.) Dies ist häufig sehr nützlich, da Sie eine beliebige Zahl zwischen 0 und 255 in zwei Bytes ausdrücken können.quelle
10
ist eigentlich die Nummer1
und die Nummer0
nicht die Nummer10
, also ist es eher 10-255.Lesen Sie die Quelle
Ab sofort gibt es viele undokumentierte Dinge - das mysteriöse
m
Modul unter ihnen, das viele eingebaute Elemente enthält. Sie sind jedoch in der Quelle vorhanden, und es ist wirklich nicht schwer zu lesen, sobald Sie den Dreh raus haben. Lesen Sie also die Quelle.quelle
m
ysteriousm
ath Modul.m
odule. (6 weitere zu gehen ...)Funktionsumfang erhöhen
Jede Funktion hat eine Arität. Zum Beispiel
+
hat eine Stelligkeit 2. Wenn Sie wollen (sagen wir) 5 Elemente hinzufügen, Sie könnten 5 + s verwenden ... oder tun+θ12345
. Speziell:θ
erhöht die Arität der Funktion um 3.~θ
erhöht die Arität der Elternfunktion um 3. (*+~θ345678
Erhöht also die Arität der Elternfunktion*
um 3)M
erhöht die Arität der Funktion um 2.~M
Erhöht die Arität der übergeordneten Funktion um 2.;
erhöht die Arität der Funktion um 1.~;
Erhöht die Arität der übergeordneten Funktion um 1.η
verringert die Arität der Funktion um 1.~η
Verringert die Arität der übergeordneten Funktion um 1.\xad
Setzt die Arität der übergeordneten Funktion auf den Zeichencode des nächsten Zeichens.quelle
*+~θ
over*θ+
?~<char>
.Nutzen Sie die implizite Eingabe
Wenn eine Funktion nicht über genügend Argumente verfügt, wird der Rest der Argumente in der Eingabe gesucht. Beispielsweise:
Würde transpilieren zu:
Es ist gleichbedeutend mit
quelle
Verwenden Sie
o
zum Speichern von WertenÄhnlich wie andere Sprachen Variablen für die einfache / kurze Referenzierung zuweisen können, hat Jolf
o
.Druckt beispielsweise
oThx
die Eingabe plus 1.Dies ist ein unbrauchbares Beispiel, aber wenn der Ausdruck komplizierter ist als
hx
, kann er ernsthafte Folgen haben.Ebenfalls,
v"var name"<val>
ermöglicht ein Multi-char Variablennamen, undV"var name"
bekommt eine Variable aus dem Rahmen.Vielen Dank an Conor, der mir das erklärt und den vorherigen Satz gegeben hat.
quelle
v"var name"<val>
dass ein Variablenname mit mehreren Zeichen zulässig ist undV"var name"
eine Variable aus dem Gültigkeitsbereich abgerufen wird.o
, die Zuweisungsvariable zu sein