Java / .NET / C / JavaScript / vb. if-ifadelerini kısaltmak için üçlü-ifs kullanabilirsiniz.
Örneğin (Java'da):
// there is a String `s` and an int `i`
if(i<0)s="Neg";else if(i>0)s="Pos";else s="Neut";
Üçlü-if ile kısaltılabilir:
s=i<0?"Neg":i>0?"Pos":"Neut";
Meydan okuma:
Girdi: Tek bir değişken ayarlayan normal bir if-else (yuvalama ile mümkündür).
Çıktı: Dönüştürülmüş üçlü-if.
Zorluk kuralları:
- Parantez olmadan tüm if-else durumlarının mümkün olduğunu varsayabilirsiniz (bu nedenle, eğer if / else-if / else bloğunun tek bir gövdesi vardır).
- Her birinden sonra tek bir boşluk
else
(at dahilelse if
) dışında boşluk, sekme veya yeni satır olmayacağını varsayabilirsiniz . - Kullanılan değişken adlarının her zaman tek bir küçük harf (
[a-z]
) olduğunu varsayabilirsiniz . - Değişkenlere verilen değerler şunlardan biri olabilir:
- Çift tırnak çevrili olacak (yani, (boşluk / tablet / yeni satır olmadan) Yaylı
"Test"
,"SomeString"
,"Example_string"
vb.) Dizelerin hiçbir zaman alt dizeleri içermediğiniif
veyaelse
boşluk, sekme, yeni satır, (çıkış karakterli) çift tırnak işareti veya karakter içermeyeceğini varsayabilirsiniz=
. Karakterleri içerebilir><(){}[];?:!&|
, ancak yalnızca yazdırılabilir ASCII aralığında olacaktır (['!' (33), '~' (126)]
). - Tamsayılar (yani
0
,123
,-55
vs.) - Ondalık (yani
0.0
,0.123
,-55.55
vs.)
- Çift tırnak çevrili olacak (yani, (boşluk / tablet / yeni satır olmadan) Yaylı
- Değerler asla karıştırılmayacak. Böylece atanan tüm değişkenler tamsayıdır, bazıları tamsayı değildir ve bazıları dizgidir.
- Parantez içindeki koşullar aşağıdaki karakterleri içerebilir
=<>!+-/*%&|[]
,a-z
,0-9
. Herhangi bir iç parantez olmayacağını ve ayrıca kullanılan birden fazla karakterin (örneğinif(if<0)
) herhangi bir (kafa karıştırıcı) alanının olmayacağını varsayabilirsiniz . - Bunun
i*=10
yerine kısayolların olmayacağını varsayabilirsinizi=i*10
. - Sarkan
else
davalarla uğraşmanıza gerek kalmayacak , böylece hepsi birif
ile eşleştirilebilirelse
. Yaniif(a)if(b)r=0;else r=1;
olası bir giriş durumu değil.if(a)if(b)r=0;else r=1;else r=2;
veyaif(a&&b)r=0;else if(a&&!b)r=1;else r=-1;
vardır. - G / Ç esnektir. Giriş ve Çıkış bir dize, karakter listesi, STDIN'den okunabilir, STDOUT'a çıktı vb. Olabilir.
- Tüm dillerin çoğu dilde standart olduğu gibi ( ancak PHP'de değil ) doğru bir ilişkilendirmesi olacaktır .
Genel kurallar:
- Bu kod golf , bayt en kısa cevap kazanır.
Kod golf dillerinin, kod yazmayan dillerle yanıt göndermenizi engellemesine izin vermeyin. Herhangi bir programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın. - Cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT, fonksiyon / yöntemi uygun parametreler ve dönüş tipi, tam programlar ile kullanmanıza izin verilir. Çağrınız.
- Varsayılan Loopholes yasaktır.
- Mümkünse, lütfen kodunuz için test içeren bir bağlantı ekleyin.
- Ayrıca, mümkünse lütfen bir açıklama ekleyin.
Test senaryoları:
Input: if(i<0)s="Neg";else if(i>0)s="Pos";else s="Neut";
Output: s=i<0?"Neg":i>0?"Pos":"Neut";
Input: if(i%2<1)r=10;else r=20;
Output: r=i%2<1?10:20;
Input: if(n<10)if(m<0)i=0;else i=10;else if(m<0)i=-1;else i=1;
Output: i=n<10?m<0?0:10:m<0?-1:1;
Input: if(i==1)i=0.0;else i=0.25;
Output: i=i==1?0.0:0.25;
Input: if(!a)if(b)r=0;else r=1;else r=2;
Output: r=!a?b?0:1:2;
Input: if(a)if(b)r=0;else r=1;else if(c)r=2;else r=3;
Output: r=a?b?0:1:c?2:3;
Input: if(a&&b)r=0;else if(a&&!b)r=1;else r=-1;
Output: r=a&&b?0:a&&!b?1:-1;
Input: if(i[0]>0)if(j>0)if(q>0)r="q";else r="j";else r="i";else r="other";
Output: r=i[0]>0?j>0?q>0?"q":"j":"i":"other";
Input: if(i>0)r="i";else if(j>0)r="j";else if(q>0)r="q";else r="other";
Output: r=i>0?"i":j>0?"j":q>0?"q":"other";
Input: if(a>0)if(a<2)x="one";else if(a<3)x="two";else if(a<4)x="three";else x="other";else x="other";
Output: x=a>0?a<2?"one":a<3?"two":a<4?"three":"other":"other";
Input: if(b[0]<=b[1])q=5;else if(b[0]==null)q=0;else q=-10;
Output: q=b[0]<=b[1]?5:b[0]==null?0:-10;
if ... then ... else
'da üçlü operatör. Yani eğer yazarsanızlet result = if 10 > 100 then 99 else -99
değeriresult
olur-99
.