Golftipps in Jolf

12

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.

Rɪᴋᴇʀ
quelle
Willkommen auf der Website. Weitere Informationen finden Sie auf der Seite " Fragen " und auf der Seite " Tour" .
20.

Antworten:

4

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$~$5transpiles zu add(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:

u[3*5,5/6,(3+4)/5]

Transpiles zu:

sum([2 * 3, 5 / 3, (3 + 4) / 5]);
Conor O'Brien
quelle
1
Wenn aus irgendeinem Grund Jolf genug Golf spielt (...?)
Erik der Outgolfer
@EriktheOutgolfer ist nicht **
Conor O'Brien
7

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, ob I + I = reverse(I + I). Dies wird wie folgt geschrieben:

=+II_+II

Dies kann jedoch auf Folgendes zurückgeführt werden:

=γ+II_γ
Conor O'Brien
quelle
Hat Ihr -1 / 12-Zeta etwas mit Stringtheorie zu tun? Ich kenne eine Möglichkeit, jede natürliche Zahl zu addieren und -1/12
DeepDeadpool am
1
@GheyPhistor Welche Stringtheorie? Aber ja, es ist so, dass die Zeta-Funktion über den natürlichen Zahlen -1/12 ist.
Conor O'Brien
6

Verwenden @

@ist ein Befehl, der das nächste Zeichen im Quellcode annimmt und den Codepunkt dieses Zeichens zurückgibt. (Gibt beispielsweise @X88 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.

ein Spaghetto
quelle
"zwischen 100 und 255"
Leaky Nun
@KennyLau In Jolf 10ist eigentlich die Nummer 1und die Nummer 0nicht die Nummer 10, also ist es eher 10-255.
ein Spaghetto
Ich
Undichte Nonne
4

Lesen Sie die Quelle

Ab sofort gibt es viele undokumentierte Dinge - das mysteriöse mModul 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.

Fund Monica Klage
quelle
1
Das mysterious math Modul.
Conor O'Brien
1
module. (6 weitere zu gehen ...)
Undichte Nonne
2

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. ( *+~θ345678Erhö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.
Conor O'Brien
quelle
Was ist der Vorteil von *+~θover *θ+?
user253751
@immibis Es ist nicht in diesem Fall, es war nur zur Veranschaulichung. Es gibt einige Funktionen in Jolf, die beim Parsen zwei Funktionen übergeben. Die einzige Möglichkeit, auf die Arität der Top-Funktion zuzugreifen, ist die Verwendung von ~<char>.
Conor O'Brien
2

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:

+uz

Würde transpilieren zu:

add(sum(unaryRange(x)), x)

Es ist gleichbedeutend mit

+uzxx
Conor O'Brien
quelle
1

Verwenden Sie ozum Speichern von Werten

Ähnlich wie andere Sprachen Variablen für die einfache / kurze Referenzierung zuweisen können, hat Jolf o .

Druckt beispielsweise oThxdie 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, und V"var name"bekommt eine Variable aus dem Rahmen.

Vielen Dank an Conor, der mir das erklärt und den vorherigen Satz gegeben hat.

Rɪᴋᴇʀ
quelle
Beachten Sie auch, v"var name"<val>dass ein Variablenname mit mehreren Zeichen zulässig ist und V"var name"eine Variable aus dem Gültigkeitsbereich abgerufen wird.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Oh, das ist es, was sie tun. Hinzufügen zum Beitrag.
25.
2
o Danke für diesen Tipp: P
Downgoat
@ EᴀsᴀIᴛᴇʀʟʏ Es war ein Wortspiel o, die Zuweisungsvariable zu sein
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ o, ja ....
Rɪᴋᴇʀ