Jolf - процедурный язык игры в гольф, созданный @ CᴏɴᴏʀO'Bʀɪᴇɴ.
Какие у вас есть советы по игре в гольф в Джольфе?
Пожалуйста, оставьте один совет за ответ.
Эти советы должны быть хотя бы несколько специфичны для Джольфа, например, удалить комментарии - это ответ, но не очень хороший.
Ответы:
JavaScript отступает
Если по какой-то непонятной причине Джольф недостаточно разбирается в гольфе или просто не может с этим справиться, возможно, стоит использовать JavaScript eval. Это может произойти одним из двух способов.
1. Разработанный Eval
Все внутри
$...$
буквально переносится на трансплантацию JS. Например,+3$~$5
переносится вadd(3, ~5)
. Эквивалентно+3:~5
.2. Массив Eval
Вы можете использовать массивы JS в Jolf! В основном. Это своего рода ошибка, но я не собираюсь ее исправлять. Например:
Транспортирует к:
источник
Знайте свои автоматически назначаемые переменные!
У Джольфа есть много способов «автоматического назначения» переменных. Стандартным является значение
γ
, которое принимает значение следующего выражения.Β
это то же самое, но преобразует следующее выражение в число.Кроме того,
ζ
(дзета) - это переменная, инициализированная-1/12
(угадайте почему), и ее можно переназначить с помощьюΖ
(дзета).Например, допустим, вы хотите сравнить
I
(входную строку) с операцией над собой. Сейчас посмотрим, еслиI + I = reverse(I + I)
. Это записано как, условно:Но это можно отнести к:
источник
использование
@
@
это команда, которая берет следующий символ в исходном коде и возвращает кодовую точку этого символа. (Например,@X
возвращает 88.) Это часто очень полезно, поскольку вы можете выразить любое число от 0 до 255 в двух байтах.источник
10
самом деле число,1
а0
не число10
, так что это больше похоже на 10-255.Читать источник
На данный момент есть много недокументированных вещей -
m
среди них таинственный модуль, который имеет много встроенных функций. Тем не менее, они существуют в источнике, и это действительно не сложно читать, как только вы освоите его, так что читайте источник.источник
m
Ysteriousm
модуль ATH.m
МОДУЛЬ. (Осталось еще 6 ...)Увеличение функции арности
У каждой функции есть арность. Например,
+
имеет арность 2. Если вы хотите (скажем) добавить 5 элементов, вы можете использовать 5 + s ... или сделать+θ12345
. В частности:θ
увеличивает арность функции на 3.~θ
увеличивает арность родительской функции на 3. (Таким образом,*+~θ345678
арность увеличивается на*
3)M
увеличивает арность функции на 2.~M
увеличивает арность родительской функции на 2.;
увеличивает арность функции на 1.~;
увеличивает арность родительской функции на 1.η
уменьшает арность функции на 1.~η
уменьшает арность родительской функции на 1.\xad
устанавливает арность родительской функции в код следующего символа.источник
*+~θ
над*θ+
?~<char>
.Воспользуйтесь преимуществами неявного ввода
Если функция не имеет достаточного количества аргументов, она будет искать входные данные для оставшихся аргументов. Например:
Переместится в:
Это эквивалентно
источник
Используйте
o
для хранения значенийПодобно тому, как другие языки могут присваивать переменные для простой / краткой ссылки, у Джольфа есть
o
.Например,
oThx
печатает ввод плюс 1.Это бесполезный пример, но когда выражение более сложное, чем
hx
это, оно может сохранить серьезный байт.Кроме того,
v"var name"<val>
допускает имя переменной с несколькими символами иV"var name"
получает переменную из области видимости.Спасибо Конору за то, что он объяснил мне это и дал предыдущее предложение.
источник
v"var name"<val>
учитывает имя переменной с несколькими символами иV"var name"
получает переменную из области видимости.o
назначения переменной