Mathemania Özellikleri:
Mathemania kodunun her parçası numarayla başlar 2
. 'Den, 2
aş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
, f
Ve r
komutları (aynı zamanda ile başlamak ilave Mathemania komutları ile değiştirilebilir 2
fonksiyonu 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 3
sonra e
şöyle:
e(efrrc) -> cube a number, "efrrc" = 3
NOT: amacımız için, faktöryel komut ( f
) 2
tek 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 n
az bunun altında ve n
ve böylece nihai sayısı vermeye kadar üzerine, daha az daha n
Olmadan 0
veya 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 n
girdi 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,000
iç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,000
ve10,100
test 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
,f
ver
, (örneğin, bu işlevleri içinde Mathemania kodue(efrrc)
,efrrc
iş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
5
ve çıktılandığındaefrc
, her girdi5
verildiğ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 ef
işlemden önce sonucun çıktısını alması mümkün mü?