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


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*ничем (необходимо включить, +чтобы число не превышало 7). Не забудьте включить код в конце перед вводом, чтобы очистить его.

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

Попробуйте онлайн!

Для примера «реального мира» я использовал этот прием для решения некоторых проблем «Джимми»:

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.