Utwórz najkrótszą funkcję do konwersji ciągu cyfr rzymskich na liczbę całkowitą.
Reguły dla każdej litery można znaleźć na stronie Wikipedii . Litery powyżej 1000 będą miały nawiasy wokół nich, sygnalizując ich wyższą wartość.
Wymagania:
- Należy przekonwertować cyfry rzymskie od 1 do 500 000
- Musisz ukończyć w mniej niż minutę
- Nie używa wbudowanych funkcji, które mogłyby zapewnić przewagę (np .: funkcja konwertująca cyfry rzymskie na liczby całkowite)
- Jest funkcją
Funkcja nie musi obsługiwać ułamków. Wszelkie nieprawidłowe dane wejściowe powinny zwracać liczbę 0.
Najkrótsza funkcja wygrywa. W przypadku remisu wygrywa ten z największą liczbą głosów.
Przypadki testowe
Wejście
III
Wynik
3
Wejście
IIII
Wynik
0
Wejście
XVI
Wynik
16
Wejście
(C)(D)(L)MMI
Wynik
452001
code-golf
math
function
roman-numerals
Kevin Brown
źródło
źródło
(C)(D)(L)MMI
mi umknie , będzie 452,001. Jak uzyskałeś swoją wartość? Ponadto, czy musi to obsługiwać „niewłaściwe” formularze (np.IC
ZamiastXCIX
)?Odpowiedzi:
C ++:
914855 znakówMożna go jeszcze bardziej skompresować.
Nieco ładniejsze formatowanie: 1582 znaków
źródło
JavaScript, 317 znaków
Wyjaśnienie:
Bez wykrywania błędów jest to tylko 180 znaków
Działa to w ten sam sposób, ale tutaj jest lepsze formatowanie:
źródło