Leonardo da Pisano aka Fibonacci odegrał kluczową rolę w wprowadzeniu hindusko-arabskiego systemu liczbowego do Europy. Przedtem matematycy pracowali w bazie sześćdziesiątej z cyframi rzymskimi.
Na przykład pierwiastek kwadratowy z dwóch może być aproksymowany jako: jedna dwadzieścia cztery części sześćdziesięciu pięćdziesięciu jeden części trzech tysięcy sześćset sto , i zapisany jako: ixiv li , ze skalowaniem określonym przez kontekst. W tym czasie „nicość” była znana ( tj. Zero), ale nie miała standardowej reprezentacji w tym systemie liczbowym.
Gdyby Fibonacci zignorował te wypukłe cyfry dziesiętne, które napotkał podczas swoich podróży, z pewnością usunąłby braki w obecnym systemie. Ten ulepszony system nazywamy seksualnymi naśladowaniami Fibonacciego .
Twoim zadaniem jest napisanie programu, funkcji lub fragmentu kodu, który pobierze liczbę zmiennoprzecinkową w formacie ASCII lub binarnym i wyprowadzi bazowe sześćdziesiąt cyfr rzymskich. Dane wejściowe mogą być argumentami pliku, konsoli, wiersza polecenia lub funkcji, a dane wyjściowe mogą być plikiem lub konsolą, w zależności od tego, co jest najłatwiejsze.
Dane wyjściowe mogą być pisane wielkimi lub małymi literami i muszą zawierać następujące ulepszenia:
- użyj n lub N, aby wskazać null, co oznacza, że miejsce nie ma wartości, tj. „zero” (problem z systemem)
- użyj e lub E, aby wskazać et odpowiadający punktowi płciowemu (inny problem z systemem)
- użyj środkowej kropki · lub gwiazdki *, aby oddzielić grupy cyfr rzymskich (kolejny problem z systemem)
Załóżmy, że wejście będzie zmiennoprzecinkowe z mantysą nie większą niż lix · lix · lix · lix · lix . Ułamki mniejsze niż n · e · n · n · n · n · i można zignorować. Tak więc, pod warunkiem, że dane wejściowe mają te ograniczenia, można wyprowadzić maksymalnie dziesięć grup cyfr rzymskich z jednym e .
Liczby mniejsze niż ja muszą mieć wiodący numer, aby zapewnić wyraźny kontekst.
Kilka przykładów: input
→ wyjście
0
→ n1
→ i60
→ i · n0.1
→ n · e · vi3600
→ i · n · n10.5
→ x · e · xxx16777215
→ i · XVII · XX · XX · XV3.1415926536
→ iii · e · viii · xxix · xliv · n · xlvii
Wyjście musi unikać niepotrzebnego wiodącego n · w części mantysy, izolowanego e lub końcowego · n w części ułamkowej wyniku. Na przykład n · n · n · n · i , i · e oraz i · e · n · n · n · n · n są niepoprawnymi wyjściami dla wejścia 1
.
Różnice plus lub minus n · e · n · n · n · n · i na wyjściu mieszczą się w tolerancjach i są dopuszczalne.
Dane wejściowe to dowolne legalne zmiennoprzecinkowe w wybranym języku, więc mogą zawierać wykładniki dodatnie lub ujemne, o ile dane wejściowe nie mieszczą się w zakresie określonym powyżej.
I wreszcie, dozwolone są wbudowane cyfry rzymskie !
Odpowiedzi:
Python 3,
323319320 bajtówTa odpowiedź implementuje stosunek płciowy Fibonacciego z ogranicznikiem
*
i bez względu na złożoność Kołmogorowa na listach cyfr rzymskich (przynajmniej na razie). Podjęto próby przyłączenia się do pętliwhile
ifor
, w której cyfry rzymskie są generowane w ramach jednej pętli, ale próby te jeszcze się nie powiodły. Wszelkie wskazówki i sugestie dotyczące gry w golfa są mile widziane.Edycja: Naprawianie błędów i gra w golfa.
Edycja: więcej naprawiania błędów.
Nie golfowany:
źródło
C - 584 bajtów
Oczywiście nie konkuruje, ale ma służyć jako inspiracja:
Zapisz jako
fs.c
, budujgcc -o fs fs.c -lm
i uruchamiaj jako./fs <arg>
.Przypadki testowe:
Największa mantysa i frakcja:
Używam
double
jako typu roboczego, więc największa kombinacja mantysy i frakcji przekracza natywną dokładność tego typu. Gdybym użyłlong double
zamiast tego, poradziłby sobie z tym.źródło
int main
nie musi wracać0
.Haskell (
333322315 bajtów)Nie jestem pewien, czy ostatnia cyfra płciowa ma być zaokrąglana, kiedy to robię, czy też możliwe jest obcięcie; to obcina, myślę, że Python3 też może?
(-9 bajtów, dzięki H.PWiz ! -2 bajtów eliminując
where
do(\->)$
-5 bardziej przez wynalezienie tejd
funkcji i golfaa++"."++x
doa++'.':x
).Nie golfowany:
Metoda konwersji liczb całkowitych na cyfry rzymskie została bezwstydnie skradziona Thomasowi Ahle'owi na StackOverflow i po prostu trochę grała w golfa.
źródło
["l","xl","x","ix","v","iv","i"]
może byćwords"l xl x ix v iv i"