Specyfikacja Mathemania:
Każdy fragment kodu Mathemania zaczyna się od cyfry 2. Z poziomu 2możesz wykonać następujące operacje:
e: Potęgowanie. Domyślnym poleceniem jest podniesienie liczby do kwadratu.f: Factorial. Domyślnie to polecenie używa pojedynczego silnia na liczbie (using f on 2 = 2! = 2).r: Root. Domyślnym poleceniem jest zrootowanie liczby na kwadrat.c: Funkcja sufitowa.l: Funkcja podłogi.
Aby wygenerować liczbę w Mathemanii, musisz połączyć te polecenia, które są wykonywane od lewej do prawej na numerze 2.
Przykłady:
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
Te e, foraz rpolecenia mogą być zmieniane przez dodatkowych poleceń Mathemania (które również rozpocząć się 2jako „bazy” liczba) w celu wytworzenia różnych exponentiations, silnię i korzeni poprzez umieszczenie wsporników po funkcji zmienionego i wprowadzania poleceń Mathemania środku.
Na przykład, aby utworzyć sześcian zamiast kwadratu, możesz wstawić polecenie 3po e:
e(efrrc) -> cube a number, "efrrc" = 3
UWAGA: w naszym celu polecenie silnia ( f) zaczyna się 2od pojedynczego silnia. Więc jeśli to zrobisz f(efrrc), zostanie to ocenione do podwójnego silnia, a nie potrójnego silnia.
W przypadku nwspółczynników (np. Podwójnych silni = 2-silniak, potrójnego silni = 3-silniak itp.) Liczbę podstawową mnoży się przez liczbę, która jest nmniejsza od niego, i nmniejsza, i tak dalej, aż do ostatecznej liczby nie będzie odejmowane przez nbez stawania się 0lub ujemne.
Na przykład:
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)
Aby uzyskać więcej informacji, zobacz tutaj .
Możesz wstawić go w dowolnym miejscu, a Mathemania potraktuje go jako jedną funkcję:
e(efrrc)rc = ceil(sqrt(2^3))
= ceil(2.82...)
= 3
Możesz także zagnieżdżać je w sobie:
e(e(e)) = e(4th power)
= (2^4)th power
= 16th power
Aby znaleźć tłumacza kodu Mathemania, kliknij tutaj (na zdrowie, @ BradGilbertb2gills!)
Zadanie:
Twoim zadaniem jest stworzenie programu, który po podaniu dodatniej liczby całkowitej njako sygnału wejściowego generuje program Mathemania, który po uruchomieniu zwraca n.
Jednak programy Mathemania które generują musi być tak małe (grałem), jak to możliwe, a końcowy wynik jest określony przez sumę liczby bajtów w wygenerowanym programów Mathemania próbki, które są liczbami całkowitymi 10,000do 10,100. Najniższy wynik wygrywa.
Zasady i specyfikacje:
- Twój program musi wypisać prawidłowy program Mathemania dla dowolnej dodatniej liczby całkowitej, ale tylko liczby między
10,000i10,100zostaną przetestowane. - Nie wolno wyprowadzać programów Mathemania, które nie dają liczb całkowitych. Jeśli to zrobisz, Twój program zostanie zdyskwalifikowany.
- Dla poleceń
e,firkod Mathemania wewnątrz tych funkcji (na przykłade(efrrc), w przypadku gdyefrrcjest to kod wewnątrz funkcji) musi dawać w wyniku dodatnia powyżej2. Jeśli twój program nie przestrzega tej zasady, również jest zdyskwalifikowany. - Twój program musi zwrócić program Mathemania dla jednej ze 101 liczb całkowitych testowych w najwyżej 30 minut na nowoczesnym laptopie.
- Twój program musi zwracać to samo rozwiązanie dla dowolnej liczby całkowitej przy każdym uruchomieniu. Na przykład, gdy program otrzymuje dane wejściowe
5i wyświetla dane wyjścioweefrc, musi je wyprowadzać za każdym razem, gdy dane wejściowe5są podawane. - Nie możesz na stałe kodować żadnych rozwiązań dla dodatniej liczby całkowitej.
- Aby w pełni zmaksymalizować potencjał gry w golfa, twój program powinien być w stanie obsłużyć dowolnie duże liczby całkowite. Nie jest to wymagane, ale powodzenia, jeśli Twój język tego nie obsługuje.
To jest metagolf , więc wygrywa najniższy wynik!
efna przykład, czy kod może „pomijać” i wyświetlać wynik przed efoperacją?