Jolf jest proceduralnym językiem golfowym stworzonym przez @ CᴏɴᴏʀO'Bʀɪᴇɴ.
Jakie masz wskazówki dotyczące gry w golfa w Jolf?
Proszę zamieścić jedną wskazówkę na odpowiedź.
Te wskazówki powinny być przynajmniej nieco specyficzne dla Jolfa, np. Usunięcie komentarzy jest odpowiedzią, ale niezbyt dobrą.
Odpowiedzi:
JavaScript wraca
Jeśli z jakiegoś dziwnego powodu Jolf nie jest wystarczająco golfisty lub po prostu nie może sobie poradzić, warto skorzystać z eval JavaScript. Może się to zdarzyć na dwa sposoby.
1. Zaprojektowany eval
Wszystko w środku
$...$
jest dosłownie przenoszone na transpozycję JS. Na przykład+3$~$5
transpile doadd(3, ~5)
. Odpowiednio+3:~5
.2. Tablica eval
Możesz używać tablic JS w Jolf! Przeważnie. To rodzaj błędu, ale go nie naprawię. Na przykład:
Transpozycje do:
źródło
Poznaj swoje automatyczne zmienne!
Jolf ma wiele sposobów na „automatyczne przypisywanie” zmiennych. Standardowym jest
γ
, który przyjmuje wartość następnego wyrażenia.Β
to to samo, ale konwertuje następne wyrażenie na liczbę.Ponadto
ζ
(zeta) jest zmienną inicjalizowaną na-1/12
(zgadnij dlaczego) i można ją ponownie przypisać za pomocąΖ
(Zeta).Załóżmy na przykład, że chcesz porównać
I
(ciąg wejściowy) z operacją nad samym sobą. Na razie zobaczmy, czyI + I = reverse(I + I)
. Zapisuje się to jako:Ale można to pograć w golfa do:
źródło
Posługiwać się
@
@
to polecenie, które pobiera następny znak w kodzie źródłowym i zwraca punkt kodowy tego znaku. (Na przykład@X
zwraca 88.) Jest to często bardzo przydatne, ponieważ można wyrazić dowolną liczbę od 0 do 255 w dwóch bajtach.źródło
10
jest tak naprawdę liczba,1
a liczba0
nie jest liczbą10
, więc jest bardziej jak 10-255.Przeczytaj źródło
W tej chwili istnieje wiele nieudokumentowanych rzeczy -
m
wśród nich tajemniczy moduł, który ma wiele wbudowanych funkcji. Jednak istnieją one w źródle i naprawdę nie jest trudno je odczytać, gdy się zorientujesz, więc przeczytaj źródło.źródło
m
Ysteriousm
moduł ATH.m
odule. (Pozostało jeszcze 6 ...)Zwiększ arity funkcji
Każda funkcja ma swój cel. Na przykład,
+
ma arity z 2. Jeśli chcesz (powiedzmy) dodać 5 elementów, to mógłby użyć 5 + S ... albo zrobić+θ12345
. Konkretnie:θ
zwiększa ariancję funkcji o 3.~θ
zwiększa arity funkcji nadrzędnej o 3. (Tak*+~θ345678
zwiększa arity o*
3)M
zwiększa arianancję funkcji o 2.~M
zwiększa arity funkcji rodzica o 2.;
zwiększa arianancję funkcji o 1.~;
zwiększa arity funkcji rodzica o 1.η
zmniejsza arianancję funkcji o 1.~η
zmniejsza arianancję funkcji rodzica o 1.\xad
ustawia arity funkcji nadrzędnej na kod znaków następnego znaku.źródło
*+~θ
w ciągu*θ+
?~<char>
.Skorzystaj z niejawnego wkładu
Jeśli funkcja nie ma wystarczającej liczby argumentów, przeszuka dane wejściowe dla pozostałej części argumentów. Na przykład:
Przełożyłby się na:
Jest to równoważne z
źródło
Służy
o
do przechowywania wartościPodobnie jak inne języki mogą przypisywać zmienne do łatwego / krótkiego odwoływania, Jolf ma
o
.Na przykład
oThx
drukuje wejście plus 1.Jest to bezużyteczny przykład, ale gdy wyrażenie jest bardziej skomplikowane
hx
, może zaoszczędzić trochę poważnego bajtu.Ponadto,
v"var name"<val>
pozwala na nazwy zmiennej multi-char iV"var name"
pobiera zmienną z zakresu.Dziękuję Conorowi za wyjaśnienie mi tego i udzielenie poprzedniego zdania.
źródło
v"var name"<val>
pozwala na nazwę zmiennej o wielu znakach iV"var name"
pobiera zmienną z zakresu.o
byciu zmienną przypisania