kısaltılması IF
ifadeleri
IF
ifadeler oldukça pahalıdır ve bunları golf oynamak çok fazla bayt tasarrufu sağlayabilir.
Aşağıdakileri düşünün ( Outgolfer Erik'in cevabından uyarlanmıştır ):
IF RND<.5THEN
x=x-1
a(i)=1
ELSE
y=y-1
a(i)=0
ENDIF
Yapabileceğimiz ilk şey, ENDIF
tek satırlık bir IF
ifade kullanarak kaydetmek :
IF RND<.5THEN x=x-1:a(i)=1ELSE y=y-1:a(i)=0
Bu, başka bir şeyle aynı satıra koymaya çalışmadığınız sürece çalışır. Özellikle, iç içe IF
ifadeleriniz varsa, yalnızca en içteki ifade tek satırlı olabilir.
Ancak bu durumda, IF
matematiği kullanarak tamamen ortadan kaldırabiliriz . Aslında ne istediğimizi düşünün:
- Eğer
RND<.5
(doğrudur -1
), biz istiyorum:
x
1 azaltmak
y
aynı kalmak
a(i)
1 olmak
- Aksi takdirde,
RND<.5
false ( 0
) ise:
x
aynı kalmak
y
1 azaltmak
a(i)
0 olmak
Biz (bir değişkenin koşullu sonucu kaydetmek Şimdi eğer r=RND<.5
), biz yeni değerler hesaplayabilir x
, y
ve a(i)
:
- Ne
r
olduğunu -1
, x=x-1
; ne zaman r
olduğunu 0
, x=x+0
.
- Ne
r
olduğunu -1
, y=y+0
; ne zaman r
olduğunu 0
, y=y-1
.
- Ne
r
olduğunu -1
, a(i)=1
; ne zaman r
olduğunu 0
, a(i)=0
.
Son kodumuz şöyle:
r=RND<.5
x=x+r
y=y-1-r
a(i)=-r
orijinal sürümün üzerine 20 bayt (% 40) tasarruf sağladı.
Matematik yaklaşımı şaşırtıcı bir şekilde sık sık uygulanabilir, ancak iki durum arasında mantıkta bir fark olduğunda (örneğin bir durumda bir şey girmeniz gerektiğinde, diğerinde değil), yine de kullanmanız gerekecektir IF
.