raccourcissant IFdéclarations
IF les instructions sont assez chères, et les jouer au golf peut économiser beaucoup d'octets.
Considérez ce qui suit (adapté d'une réponse d'Erik l'Outgolfer):
IF RND<.5THEN
x=x-1
a(i)=1
ELSE
y=y-1
a(i)=0
ENDIF
La première chose que nous pouvons faire est d'enregistrer le ENDIFen utilisant une IFinstruction sur une seule ligne :
IF RND<.5THEN x=x-1:a(i)=1ELSE y=y-1:a(i)=0
Cela fonctionne tant que vous n'essayez pas de le mettre sur la même ligne que n'importe quoi d'autre. En particulier, si vous avez des IFinstructions imbriquées , seule la plus interne peut être unilatérale.
Mais dans ce cas, nous pouvons éliminer IFentièrement les mathématiques. Considérez ce que nous voulons réellement:
- Si 
RND<.5est vrai ( -1), nous voulons:
x diminuer de 1 
y rester le même 
a(i) devenir 1 
 
- Sinon, si 
RND<.5est false ( 0), nous voulons:
x rester le même 
y diminuer de 1 
a(i) devenir 0 
 
Maintenant , si nous gagnons le résultat du conditionnel dans une variable ( r=RND<.5), nous pouvons calculer les nouvelles valeurs x, yet a(i):
- Quand 
rest -1, x=x-1; quand rest 0, x=x+0. 
- Quand 
rest -1, y=y+0; quand rest 0, y=y-1. 
- Quand 
rest -1, a(i)=1; quand rest 0, a(i)=0. 
Notre code final ressemble donc à:
r=RND<.5
x=x+r
y=y-1-r
a(i)=-r
économiser un énorme 20 octets (40%) sur la version originale.
L'approche mathématique peut être appliquée de manière surprenante souvent, mais lorsqu'il y a une différence de logique entre les deux cas (par exemple lorsque vous devez saisir quelque chose dans un cas mais pas dans l'autre), vous devrez toujours utiliser IF.