Советы по игре в гольф в Джольфе


12

Jolf - процедурный язык игры в гольф, созданный @ CᴏɴᴏʀO'Bʀɪᴇɴ.

Какие у вас есть советы по игре в гольф в Джольфе?

Пожалуйста, оставьте один совет за ответ.

Эти советы должны быть хотя бы несколько специфичны для Джольфа, например, удалить комментарии - это ответ, но не очень хороший.


Добро пожаловать на сайт, пожалуйста, прочитайте страницу Как спросить и страницу тура для получения дополнительной информации.
Rɪᴋᴇʀ

Ответы:


4

JavaScript отступает

Если по какой-то непонятной причине Джольф недостаточно разбирается в гольфе или просто не может с этим справиться, возможно, стоит использовать JavaScript eval. Это может произойти одним из двух способов.

1. Разработанный Eval

Все внутри $...$буквально переносится на трансплантацию JS. Например, +3$~$5переносится в add(3, ~5). Эквивалентно +3:~5.

2. Массив Eval

Вы можете использовать массивы JS в Jolf! В основном. Это своего рода ошибка, но я не собираюсь ее исправлять. Например:

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

Транспортирует к:

sum([2 * 3, 5 / 3, (3 + 4) / 5]);

1
Если по какой-то странной причине у Джольфа достаточно гольфа (...?)
Эрик Аутгольфер

@EriktheOutgolfer не **
Конор О'Брайен

7

Знайте свои автоматически назначаемые переменные!

У Джольфа есть много способов «автоматического назначения» переменных. Стандартным является значение γ, которое принимает значение следующего выражения. Βэто то же самое, но преобразует следующее выражение в число.

Кроме того, ζ(дзета) - это переменная, инициализированная -1/12(угадайте почему), и ее можно переназначить с помощью Ζ(дзета).

Например, допустим, вы хотите сравнить I(входную строку) с операцией над собой. Сейчас посмотрим, если I + I = reverse(I + I). Это записано как, условно:

=+II_+II

Но это можно отнести к:

=γ+II_γ

Ваш -1/12 Зета имеет отношение к теории струн? Я знаю способ сложить каждое натуральное число и получить -1/12
DeepDeadpool

1
@GheyPhistor Какая теория струн? Но да, дело в том, что дзета-функция над натуральными числами равна -1/12.
Конор О'Брайен

6

использование @

@это команда, которая берет следующий символ в исходном коде и возвращает кодовую точку этого символа. (Например, @Xвозвращает 88.) Это часто очень полезно, поскольку вы можете выразить любое число от 0 до 255 в двух байтах.


"между 100 и 255"
Утренняя монахиня

@KennyLau В Jolf на 10самом деле число, 1а 0не число 10, так что это больше похоже на 10-255.
спагетто

Я вижу, спасибо ..
Leaky Nun

4

Читать источник

На данный момент есть много недокументированных вещей - mсреди них таинственный модуль, который имеет много встроенных функций. Тем не менее, они существуют в источнике, и это действительно не сложно читать, как только вы освоите его, так что читайте источник.


1
mYsterious mмодуль ATH.
Конор О'Брайен

1
mМОДУЛЬ. (Осталось еще 6 ...)
Утренняя монахиня

2

Увеличение функции арности

У каждой функции есть арность. Например, +имеет арность 2. Если вы хотите (скажем) добавить 5 элементов, вы можете использовать 5 + s ... или сделать +θ12345. В частности:

  • θ увеличивает арность функции на 3.
  • увеличивает арность родительской функции на 3. (Таким образом, *+~θ345678арность увеличивается на *3)
  • M увеличивает арность функции на 2.
  • ~M увеличивает арность родительской функции на 2.
  • ; увеличивает арность функции на 1.
  • ~; увеличивает арность родительской функции на 1.
  • η уменьшает арность функции на 1.
  • уменьшает арность родительской функции на 1.
  • \xad устанавливает арность родительской функции в код следующего символа.

Что преимущество *+~θнад *θ+?
user253751

@immibis В таком случае нет, это было просто иллюстративно. В Jolf есть несколько функций, которые передают две функции при разборе. Тогда единственный способ получить доступ к функции верхнего уровня - использовать ~<char>.
Конор О'Брайен

2

Воспользуйтесь преимуществами неявного ввода

Если функция не имеет достаточного количества аргументов, она будет искать входные данные для оставшихся аргументов. Например:

+uz

Переместится в:

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

Это эквивалентно

+uzxx

1

Используйте oдля хранения значений

Подобно тому, как другие языки могут присваивать переменные для простой / краткой ссылки, у Джольфа есть o.

Например, oThxпечатает ввод плюс 1.

Это бесполезный пример, но когда выражение более сложное, чем hxэто, оно может сохранить серьезный байт.

Кроме того, v"var name"<val>допускает имя переменной с несколькими символами и V"var name"получает переменную из области видимости.

Спасибо Конору за то, что он объяснил мне это и дал предыдущее предложение.


Также обратите внимание, что v"var name"<val>учитывает имя переменной с несколькими символами и V"var name"получает переменную из области видимости.
Конор О'Брайен

@ C'O'Bʀɪᴇɴ о, вот что они делают. Добавление в пост.
Rɪᴋᴇʀ

2
Спасибо за этот совет: P
Downgoat

@ EᴀsᴛᴇʀʟʏIʀᴋ Это была игра слов oназначения переменной
Конор О'Брайен

@ CᴏɴᴏʀO'Bʀɪᴇɴ о, да ....
Rɪᴋᴇʀ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.