Arka fon
Bu bulmaca dört ayak bulmaca bir varyasyon (kendisi geçmiş bir sorunun konusu ). Bu bulmaca gibi, amaç sadece dört basamak ve belirli matematiksel operatörleri kullanarak farklı tam sayılar için matematiksel ifadeler bulmaktır. Ancak bu durumda izin verilen rakamlar sadece 2, 0, 1 ve 5'tir . Her biri çözeltide ve doğru sırada tam olarak bir kez görünmelidir. Şaşırtıcı bir şekilde birçok tam sayı bu şekilde temsil edilebilir. Çözücüler, garip bir şekilde eğlenceli olduğu için önce elle çözmeyi denemeye teşvik edilir.
kurallar
Sabitler tekli veya çoklu basamaklardan oluşturulabilir:
- Tamsayılar: örneğin 2, 0, 15 vb.
- Ondalık Sayılar: örneğin .2, .01, 1.5 vb.
- Tekrarlanan ondalık sayılar : örneğin .2 ~ (= 0.222 ...), .15 ~ (= 0.1555 ...), 20.15 ~~ (= 20.1515 ...)
Aşağıdaki tekli işlemlere izin verilir:
- Tekli olumsuzlama: -x
- Karekök: sqrt (x)
- Tamsayı faktöriyeli: x!
Aşağıdaki ikili işlemlere izin verilir:
- Standart aritmetik işleçler: x + y, xy, x * y ve x / y
- Rasgele üs: x ^ y
- Keyfi kökler: rt [x] (y) (= y'nin x'inci kökü)
Görev
Programınız, 0 ile 100 arasındaki tamsayıların olabildiğince çok sayıda ifadesini yazdırmalı ve ardından ürettiği ifadelerin sayısını çıkarmalıdır.
- Çözeltiler n = [ifade] formatında sırayla yazdırılmalıdır.
- İfadeler bu sırayla her biri bir kez olmak üzere 2, 0, 1, 5 basamaklarını kullanmalıdır.
- İfadeler, yukarıda açıklanan gösterim kullanılarak yazdırılmalıdır. Boşluk gibi gereksiz parantezlere izin verilir ancak zorunlu değildir. Operatör önceliği sırası, tek taraflı olumsuzlama, faktöriyel, üs alma, çarpma / bölme ve toplama / çıkarmadır.
- Programın tüm sayılar için çözüm getirmesi gerekmez. Bu nedenle, yalnızca 0 çıktısı alan bir program geçerlidir; ancak, aşağıdaki puanlama bölümüne bakın.
- Program modern bir bilgisayarda 15 dakikadan az bir sürede çalışmalıdır.
Bir program veya işlev yazabilirsiniz. İfadeler STDOUT'a (veya en yakın alternatife) yazdırılmalıdır. İfade sayısı STDOUT'a yazdırılabilir veya bir tamsayı olarak döndürülebilir. Standart kod golf kısıtlamaları geçerlidir.
Örnek çıktı
0=2*0*1*5
10=20*1*.5
42=((2+0!)!+1)!/5!
100=20*1*5
4
puanlama
Güncelleme : @orlp skorlama sisteminde bir hata olduğunu kaydetti. Bunun nasıl düzeltilip düzeltilmeyeceği veya gerekip gerekmediği hakkında bir tartışma için bkz. Http://meta.codegolf.stackexchange.com/questions/5106/way-of-salvaging-two-zero-one-five-puzzle-challenge .
Çözümler önce ürettikleri ifade sayısına ve ardından bayt cinsinden kod uzunluklarına göre puanlanır . Bu nedenle, 80 sonuç üreten 1000 baytlık bir program, yalnızca 79 üreten 100 baytlık bir programı geçecektir (ikincisi eksik sonuçları içerecek şekilde genişletilebilir).
Motive edici bir hedef isteyenler için, aşağıda temsil edilebilecek ifade sayısı üzerinde bir alt sınır vardır. Bir giriş göndermeyi planlamıyorum, bu yüzden daha azıyla kazanmak mümkün olabilir!
En az 85 (101 üzerinden), ancak daha yüksek olabilir.
sayı tahtası
Ek bir teşvik olarak, puan ilerlemesinin bir özeti burada. En yüksek puanı geçtiğinizde, kendinizi masanın tepesine eklemekten çekinmeyin (veya başka birinden isteyin).
- 0 ifade, 1 bayt (Pyth): 0 çıktısı alan uygulama