Сожмите пробел
Знайте правила для пробелов на вашем языке. Некоторым знакам препинания или другим символам может не понадобиться окружающий пробел. Рассмотрим эту функцию оболочки Борна :
f () { echo a; echo b; }
В оболочке Bourne ();есть метасимволы, и не нужно окружать их пробелами. Тем не менее, {}слова являются и нуждаются в пробеле, если они не находятся рядом с метасимволами. Мы можем поиграть в гольф на 4 поля рядом с ();, но мы должны оставить расстояние между {и echo.
f(){ echo a;echo b;}
В Common Lisp и PicoLisp , ()есть метасимволы. Рассмотрим этот код, чтобы найти среднее из двух чисел:
(/ (+ a b) 2)
Мы можем сыграть в гольф на 2 места.
(/(+ a b)2)
Некоторые языки имеют странные и тонкие правила для пробелов. Рассмотрим программу Ruby, которая выводит сумму и произведение строки целых чисел.
#!ruby -an
i=$F.map &:to_i
puts"#{i.reduce &:+} #{i.reduce &:*}"
Каждому &нужно пространство перед собой. В Ruby i=$F.map &:to_iозначает, i=$F.map(&:to_i)где &передается параметр блока. Но, i=$F.map&:to_iозначает, i=$F.map.&(:to_i)где &бинарный оператор.
Эта странность встречается в языках, таких как Perl или Ruby, которые используют неоднозначную пунктуацию. В случае сомнений используйте REPL или напишите короткие программы для проверки правил пробелов.