Поради щодо гольфу в Джольфі


12

Джольф - це процедурна мова для гри в гольф, створена @ 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 не **
Conor O'Brien

7

Знайте свої автопризначення змінних!

У Джольфа є багато способів "автоматичного призначення" змінних. Стандартним є γ, який приймає значення наступного виразу. Βте саме, але перетворює наступний вираз у число.

Також ζ(zeta) є змінною, ініціалізованою до -1/12(здогадуйтесь чому), і може бути перепризначена за допомогою Ζ(Zeta).

Наприклад, скажімо, ви хочете порівняти I(рядок введення) з операцією над собою. Поки ж давайте подивимось, чи I + I = reverse(I + I). Це пишеться, як умовно:

=+II_+II

Але це може бути знищено до:

=γ+II_γ

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

1
@GheyPhistor Яка теорія струн? Але так, це те, що функція зети над натуральними числами становить -1/12.
Conor O'Brien

6

Використовуйте @

@це команда, яка приймає наступний символ у вихідному коді та повертає кодову точку цього символу. (Наприклад, @Xповертає 88.) Це часто дуже корисно, оскільки ви можете виразити будь-яке число від 0 до 255 у двох байтах.


"між 100 і 255"
Leaky Nun

@KennyLau У Джольфа - 10це насправді число 1і число, а 0не число 10, тож воно більше схоже на 10-255.
спагето

Я бачу, дякую ..
Leaky Nun

4

Прочитайте джерело

На сьогоднішній день є багато незадокументованих речей - таємничий mмодуль серед них, у якому багато вбудованих. Однак вони існують у джерелі, і прочитати їх справді важко, коли прочитаєте його, тому прочитайте джерело.


1
mYsterious mмодуль ATH.
Conor O'Brien

1
mодуля. (Ще 6 ...)
Лина монашка

2

Збільшити функцію Arity

Кожна функція має ариту. Наприклад, +має атрибут 2. Якщо ви хочете (сказати) додати 5 елементів, ви можете використовувати 5 + s ... або робити +θ12345. Конкретно:

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

Що перевагу *+~θнад *θ+?
користувач253751

@immibis У цьому випадку це не було, це було лише показово. У Джольфа є деякі функції, які передають дві функції при розборі. Тоді єдиним способом отримати доступ до масиву верхньої функції є використання ~<char>.
Conor O'Brien

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"змінної з декількома знаками та отримує змінну з області дії.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ о, так це вони роблять. Додавання до публікації.
Rɪᴋᴇʀ

2
o Thx для цієї
поради

@ EᴀsᴛᴇʀʟʏIʀᴋ Був каламбур за oте, що він міняє змінну
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ о, так ....
Rɪᴋᴇʀ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.