Exprimir espacios en blanco
Conozca las reglas para espacios en blanco en su idioma. Es posible que algunos signos de puntuación u otros caracteres no necesiten espacios en blanco circundantes. Considere esta función de shell Bourne :
f () { echo a; echo b; }
En Bourne shell, ();
son metacaracteres y no necesitan espacios en blanco circundantes. Sin embargo, {}
son palabras y necesitan espacios en blanco a menos que estén al lado de metacaracteres. Podemos jugar al golf 4 espacios al lado ();
, pero debemos mantener el espacio entre {
y echo
.
f(){ echo a;echo b;}
En Common Lisp y PicoLisp , ()
son metacaracteres. Considere este código para encontrar el promedio de dos números:
(/ (+ a b) 2)
Podemos jugar al golf 2 espacios.
(/(+ a b)2)
Algunos idiomas tienen reglas extrañas y sutiles para los espacios en blanco. Considere este programa Ruby, que imprime la suma y el producto de una línea de enteros.
#!ruby -an
i=$F.map &:to_i
puts"#{i.reduce &:+} #{i.reduce &:*}"
Cada uno &
necesita un espacio antes de sí mismo. En Ruby, i=$F.map &:to_i
significa i=$F.map(&:to_i)
donde &
pasa un parámetro de bloque. Pero, i=$F.map&:to_i
significa i=$F.map.&(:to_i)
donde&
está un operador binario.
Esta rareza ocurre en idiomas, como Perl o Ruby, que usan signos de puntuación ambiguos. Si tiene dudas, use un REPL o escriba programas cortos para probar las reglas de espacios en blanco.