Squeeze les espaces
Connaître les règles pour les espaces dans votre langue. Certains signes de ponctuation, ou autres caractères, peuvent ne nécessiter aucun espace. Considérez cette fonction shell Bourne :
f () { echo a; echo b; }
Dans Bourne Shell, ce ();
sont des métacaractères et ils n'ont pas besoin d'espaces. Cependant, il {}
existe des mots et des espaces, à moins qu'ils ne soient à côté de métacaractères. Nous pouvons jouer au golf à côté de 4 espaces ();
, mais nous devons garder l’espace entre {
et echo
.
f(){ echo a;echo b;}
Dans Common Lisp et PicoLisp , ()
sont des métacaractères. Considérez ce code pour trouver la moyenne de deux nombres:
(/ (+ a b) 2)
Nous pouvons jouer au golf 2 espaces.
(/(+ a b)2)
Certaines langues ont des règles étranges et subtiles pour les espaces. Considérez ce programme Ruby, qui affiche la somme et le produit d’une ligne d’entiers.
#!ruby -an
i=$F.map &:to_i
puts"#{i.reduce &:+} #{i.reduce &:*}"
Chacun a &
besoin d'un espace devant lui-même. En Ruby, i=$F.map &:to_i
signifie i=$F.map(&:to_i)
où &
passe un paramètre de bloc. Mais, i=$F.map&:to_i
signifie i=$F.map.&(:to_i)
où &
est un opérateur binaire.
Cette bizarrerie se produit dans des langages, tels que Perl ou Ruby, qui utilisent une ponctuation ambiguë. En cas de doute, utilisez un REPL ou écrivez des programmes courts pour tester les règles d’espace.