Поради щодо гольфу ///


12

Які загальні поради щодо гольфу /// ? Я шукаю ідеї, які можна застосувати до проблем із гольф-кодом і які також принаймні дещо характерні для /// (наприклад, "видалити зайве пробіли" - це не відповідь). Поради щодо itflabtijtslwi та Lines є актуальними і тут також діють.

Будь ласка, опублікуйте одну пораду на відповідь.

Відповіді:


5

Використовувати //як заміну

Коли ви визначаєте купу замін, наприклад:

/a/b//c/d//e/f//g/h//i/j//k/l//m/n//o/p//q/r//s/t//u/v//w/x//y/z/

(65 байт). Ви можете використовувати //як заміну:

/~/\/\///a/b~c/d~e/f~g/h~i/j~k/l~m/n~o/p~q/r~s/t~u/v~w/x~y/z/

(61 байт).


4

Неповні /// блоки не друкуються

Зауважте, що цей рядок коду

/Stack/Overflow//x/\//Stack/ignore/DoItyignore

тільки друкує Overflow- частина наперед /ignoreне включається у висновок, тому що ///друкує лише речі на третій косої частини.

Спробуйте неповний блок онлайн!

Однак він все ще вважає замінником: якби ми ввели туди косу рису, все зміниться:

/Stack/Overflow//x/\//Stack/ignore/doitxignore

Спробуйте це в Інтернеті!

Вихідні дані тут є Overflowdoit, тому що замінивши xна /нього правильним синтаксисом.


4

Розширюючи на основі та друкуючи проміжні результати, включайте попередні ітерації у майбутні

Це звучало трохи заплутано. Що я маю на увазі, можна краще описати, використовуючи фактичну відповідь. Цей виклик вимагає такого конкретного результату:

Steve Ballmer still does not know.
Steve Ballmer still does not know what he did.
Steve Ballmer still does not know what he did wrong.
Steve Ballmer still does not know what he did wrong with mobile.

Одним наївним рішенням може бути:

/1/Steve Ballmer still does not know//2/ what he did//3/ wrong//4/ with mobile./1.
12.
123.
1234

Зверніть увагу , як картина 1, 12, 123... повторюється? Ну, а не тоді, коли ти це робиш:

/1/Steve Ballmer still does not know//2/1 what he did//3/2 wrong//4/3 with mobile/1.
2.
3.
4.

Ще раз дякую Мартину Ендеру за те, що вказав на це!


2

Використовуйте символ у кінці коду для обробки крайових справ

Коли у вас є фрагмент ///коду, який обробляє всі випадки, крім одного, тоді ви можете використовувати символ на краю коду для обробки крайового регістру.

Приклад: Одинарне додайте два числа разом, якщо друге число не дорівнює 7, у цьому випадку просто виведіть перше число.

Код, який обробляє всі випадки, окрім "другий номер - 7":

/+//<INPUT 1>+<INPUT 2>

Додавши a *в кінець коду, ми можемо обробити крайовий регістр, замінивши +0000000*нічим (необхідно включити +to, щоб переконатися, що число не більше 7). Обов'язково включіть код в кінці перед входом, щоб очистити його.

/+0000000*///+///*//<INPUT 1>+<INPUT 2>*

Спробуйте в Інтернеті!

Для прикладу "реального світу" я використав цю хитрість для деяких проблем "Джиммі":

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.