Mathemania Özellikleri:
Mathemania kodunun her parçası numarayla başlar 2. 'Den, 2aşağıdaki işlemleri yapabilirsiniz:
e: Üs. Bu komutun varsayılan değeri sayıyı kareleridir.f: Faktöriyel. Bu komutun varsayılan değeri, sayıdaki (using f on 2 = 2! = 2) tek faktöriyeli kullanmaktır .r: Kök. Bu komutun varsayılan değeri sayının kare köküdür.c: Tavan fonksiyonu.l: Zemin fonksiyonu.
Mathemania'da bir sayı oluşturmak için, sayı üzerinde soldan sağa gerçekleştirilen bu komutları bir araya getirmelisiniz 2.
Örnekler:
ef = (2^2)! = 4! = 24
rl = floor(sqrt(2)) = floor(1.4...) = 1
er = sqrt(2^2) = sqrt(4) = 2
efrrc = ceil(sqrt(sqrt((2^2)!)))
= ceil(sqrt(sqrt(24)))
= ceil(sqrt(4.89...))
= ceil(2.21...)
= 3
e, fVe rkomutları (aynı zamanda ile başlamak ilave Mathemania komutları ile değiştirilebilir 2fonksiyonu değişmiş sonra parantez yerleştirilmesi ve içinde Mathemania komutları yerleştirerek, farklı üs alma, faktöriyel ve kökler üretmek için onun "temel" numarası).
Örneğin, bunun yerine o kare alma bir dizi küp için, sizin için komutu koyabilirsiniz 3sonra eşöyle:
e(efrrc) -> cube a number, "efrrc" = 3
NOT: amacımız için, faktöryel komut ( f) 2tek faktörlü olarak başlar . Yani bunu yaparsanız f(efrrc), üçlü faktöriyel değil, çift faktöriyeli değerlendirilir.
İçin n-factorials (örneğin çift faktöriyel = 2 faktörlü, üç faktör = 3 faktörlü vs.), baz numarası olan numara ile çarpılır naz bunun altında ve nve böylece nihai sayısı vermeye kadar üzerine, daha az daha nOlmadan 0veya negatif olmadan çıkarılır .
Örneğin:
7!! = 7 * 5 * 3 * 1 = 105 (repeatedly subtract 2, 1 is the last term as
1 - 2 = -1, which is negative)
9!!! = 9 * 6 * 3 = 162 (repeatedly subtract 3, 3 is the last term as
3 - 3 = 0, which is 0)
Daha fazla bilgi için buraya bakın .
Her yere yerleştirebilirsiniz ve Mathemania tarafından tek bir işlev olarak ele alınacaktır:
e(efrrc)rc = ceil(sqrt(2^3))
= ceil(2.82...)
= 3
Bunları iç içe yerleştirmenize de izin verilir:
e(e(e)) = e(4th power)
= (2^4)th power
= 16th power
Mathemania kodunun bir tercümanı için buraya tıklayın (şerefe, @ BradGilbertb2gills!)
Görev:
Göreviniz ngirdi olarak pozitif bir tamsayı verildiğinde yürütüldüğünde geri dönen bir Mathemania programı oluşturan bir program oluşturmaktır n.
Ancak, üretmek Mathemania programları mümkün olduğunca (golfed) küçük olarak olmalı, ve son puan tam sayılardır numunenin oluşturulan Mathemania programlarda bayt sayısı toplamı ile belirlenir 10,000için 10,100. En düşük puan kazanır.
Kurallar ve teknik özellikler:
- Programınız zorunluluk çıkışı herhangi bir pozitif tamsayı için geçerli bir Mathemania programı, ama sadece sayılar arasındaki
10,000ve10,100test edilecektir. - Tamsayı ile sonuçlanmayan Mathemania programlarının çıktısını almanıza izin verilmez. Bunu yaparsanız, programınız diskalifiye edilir.
- Komutlar için
e,fver, (örneğin, bu işlevleri içinde Mathemania kodue(efrrc),efrrcişlev içinde kodudur) üzerinde pozitif bir tamsayı değerlendirmelidir2. Programınız bu kurala uymuyorsa, diskalifiye edilir. - Programınız, modern bir dizüstü bilgisayarda en fazla 30 dakika içinde 101 test tamsayısının herhangi biri için bir Mathemania programı döndürmelidir.
- Programınız her çalıştırıldığında herhangi bir tamsayı için aynı çözümü döndürmelidir. Örneğin, bir program bir girdi verildiğinde
5ve çıktılandığındaefrc, her girdi5verildiğinde çıktı alınmalıdır . - Pozitif tamsayı için herhangi bir çözümü kodlayamazsınız.
- Çıktınızdaki golf potansiyelini en üst düzeye çıkarmak için, programınız keyfi olarak büyük tamsayıları işleyebilmelidir. Diliniz bunu desteklemiyorsa iyi şanslar olsa da, bu bir gereklilik değildir.
Bu metagolf , bu yüzden en düşük puan kazanır!
eförneğin ise, kodun "atlama" ya izin vermesi ve sadece efişlemden önce sonucun çıktısını alması mümkün mü?