tło
Wyzwanie to jest inspirowane tą witryną, która opublikowała następujący schemat:
Ten diagram pokazuje nam, że najdłuższe wyrażenie liczby rzymskiej poniżej 250 to 188, które wymaga 9 cyfr do wyrażenia.
Wyzwanie
Standardowe symbole wyrazić Cyfry najbardziej rzymskimi są następujące: { I
, V
, X
, L
, C
, D
, M
}, gdzie wartości liczbowe bohaterów są M
= 1000, D
= 500, C
= 100, L
= 50, a X
= 10, V
= 5 I
= 1.
W tym wyzwaniu twoim celem jest, biorąc pod uwagę dodatnią liczbę całkowitą n , obliczyć liczbę prawidłowych reprezentacji cyfr rzymskich, które można skomponować poprzez połączenie n standardowych symboli.
Następnie twój program musi wypisać wynik tego obliczenia!
Dane wejściowe : dodatnia liczba całkowita n .
Dane wyjściowe : liczba prawidłowych wyrażeń liczb rzymskich o długości n .
Reguły dla wyrażeń rzymskich
Liczby rzymskie pierwotnie miały tylko „addytywne” parowanie, co oznacza, że cyfry były zawsze zapisywane w kolejności malejącej, a suma wartości wszystkich cyfr była wartością liczby.
Później, parowanie subtraktywne, stosowanie umieszczania mniejszej cyfry przed większą w celu odjęcia mniejszej od większej, stało się powszechne w celu skrócenia wyrażeń rzymskich. Subtraktywne pary nie może być połączony, na przykład w następujący nieprawidłowej ekspresji: IXL
.
Poniżej przedstawiono współczesne zasady parowania addytywnego i odejmującego.
- Tylko jedna cyfra I, X i C może być użyta jako liczba wiodąca w części pary odejmującej.
- Mogę być umieszczony przed V lub X tylko w odejmującej parze.
- X można umieścić tylko przed L lub C w parze odejmującej.
- C można umieścić tylko przed D lub M w parze odejmującej.
- Liczby inne niż pary odejmujące muszą być w porządku malejącym (co oznacza, że jeśli upuścisz wiodącą cyfrę każdej pary odejmującej, wówczas liczby będą malejące).
- M, C i X nie mogą być równe ani przekroczone przez mniejsze nominały.
- D, L i V mogą pojawić się tylko raz.
- Tylko M można powtórzyć 4 lub więcej razy.
Dalsze uwagi
Nie będziemy używać notacji słupkowej ; raczej po prostu dodamy więcej M, aby wyrazić dowolną liczbę.
To jedyne zasady, których będziemy przestrzegać dla naszych cyfr rzymskich. Oznacza to, że wyrażenia nieparzyste, takie jak
IVI
, będą również uważane za prawidłowe w naszym systemie.Pamiętaj również, że nie liczymy liczby liczb, które mają wyrażenia długości n , ponieważ niektóre liczby mają wiele wyrażeń. Zamiast tego liczymy wyłącznie liczbę prawidłowych wyrażeń.
Przypadki testowe
1
→ 7
2
→ 31
3
→ 105
Sprawdziłem to ręcznie, więc proszę dokładnie sprawdzić przypadki testowe i dodać więcej, jeśli możesz!
Zwycięskie kryteria
To wyzwanie dla golfa , więc baw się dobrze! Akceptuję tylko rozwiązania, które potrafią obsłużyć co najmniej dane wejściowe od 1 do 9. Więcej to bonus!
Edytować
Zgodnie z prośbą komentujących, znajdź poniżej lub pod tym linkiem do pastebin, 105 kombinacji policzyłem dla n = 3
III IVI IXI IXV IXX VII XII XIV XIX XVI XXI XXV XXX XLI XLV XLX XCI XCV XCX XCL XCC LII LIV LIX LVI LXI LXV LXX CII CIV CIX CVI CXI CXV CXX CXX CXL CXC CLI CLV CLX CCI CCV CCX CCL CDC CDL CDI CD CMI CMV CMX CML CMC CMD CMM DII DIV DIX DVI DXI DXV DXX DXL DXC DLI DLV DLX DCI DCV DCX DCX DCL DCC MII MIV MIX MVI MXI MXV MXX MXL MXC MLI MLV MLX MCI MCV MCX MCL MCK MCC MCD MCM MDI MDV MDM MDL MDL MMX MML MMC MMD MMM
Edycja 2:
Użyj poniższego kodu nie golfowego , dzięki uprzejmości Jonathan Allan, aby sprawdzić swoje wyniki.
Edycja 3:
Przepraszam za wszystkie błędy w tym wyzwaniu. Następnym razem zrobię lepszą robotę!