Kodunuzda çok uzun, sıkıcı görünümlü koşullara sahip olursunuz:
if flag == 1:
while have != needed:
if type == 7:
Bunlar çok daha sevimli <3
koşullu meslektaşlarına dönüştürülebilir:
if abs(flag - 1) + 2 <3:
while 3 - abs(have - needed) <3:
if 2 + abs(type - 7) <3:
Görev
Senin görevin bir şartlı almak ve açısından yapmaktır <3
. Önemli olan tek boşluk, <
ve arasında hiçbir şey olmamasıdır 3
.
Şartlı ya ayrılmış iki ifadeler olacak ==
, !=
, >
, <
, >=
veya <=
.
İfadeler yalnızca toplama, çıkarma, tekli olumsuzlama ( -something
) içerecektir , burada her değişken veya sayıdan bir +
veya -
önce (hiçbir şeyi olmayan ilk veya hariç -
).
Sayılar [0-9]+
ve değişkenler olacaktır [a-z]+
. Yanıtın |x|
(mutlak değeri x
) kullanması gerekiyorsa, abs()
işlevi kullanın . Tüm değişkenlerin tamsayı olduğunu ve girişteki tüm sayı sabitlerinin <1000 olduğunu varsayabilirsiniz.
Çıkış yok değil 's basit haliyle olması gerekir. Yukarıdaki gibi bir koşullu olması gerekir, yani bir koşullu işaretle ayrılmış sadece iki ifadedir, ancak abs
geçerli bir ifadeyi çevreleyen işlevi de kullanabilir ve daha sonra geçerlilik açısından bir değişken gibi davranır.
Girdinin bir değişkenin herhangi bir değeri için bir çıktısı yoksa, her zaman yanlış olan, ancak yine de açısından bir koşul çıktılayın <3
.
Zorluğun bir kısmı nasıl yapılacağını bulmaktır, ancak have != needed
yukarıdakiler için adımlar şunlardır :
have != needed
have - needed != 0
abs(have - needed) > 0
-abs(have - needed) < 0
3 - abs(have - needed) <3
puanlama
Bu kod golf, bu nedenle bayt cinsinden en kısa geçerli kod kazanır.
Test senaryoları
(Not, bu çıktılar sadece çıktılar değil, ama onları basitleştirmeye çalıştım.)
flag == 1
abs(flag - 1) + 2 <3
have != needed
3 - abs(have - needed) <3
type == 7
2 + abs(type - 7) <3
x > y
3 - x + y <3
x + 5 < -y
x + 8 + y <3
x + 6 <= y
x + 8 - y <3
-x >= y + 3
x + y + 5 <3
x < x
3 <3
# Unsimplified; both would be valid outputs.
x - x + 3 <3