Opis wyzwania
Mieliśmy kilka wyzwań związanych z sekwencją Look-and-say . Szybkie przypomnienie:
- Sekwencja zaczyna się
1
, - Kolejne warunki tej sekwencji są generowane przez wyliczenie każdej grupy powtarzających się cyfr z poprzedniego terminu,
Tak więc pierwsze kilka warunków to:
1 "one"
11 "one one" (we look at the previous term)
21 "two ones"
1211 "one two, one one"
111221 "one one, one two, two ones"
312211 "three ones, two twos, one one"
Teraz zróbmy to samo, ale zamiast tego użyj cyfr rzymskich . Zaczynamy odI
i przestrzegamy tych samych zasad (zamiast tego stosujemy zasadę liczenia cyfr do znaków, więc czytamy IVX
jako one one, one five, one ten
zamiast one four, one ten
lub w inny sposób):
I "one"
II "one one"
III "two ones" = "II" + "I"
IIII "three ones" = "III" + "I"
IVI "four ones" = "IV" + "I"
IIIVII "one one, one five, one one"
IIIIIVIII "three ones, one five, two ones" = ("III" + "I") + ("I" + "V") + ("II" + "I")
Biorąc pod uwagę dodatnią liczbę całkowitą N
:
- Wypisz pierwsze
N
cyfry tej sekwencji (jakikolwiek rozsądny separator również jest w porządku["I", "II", "III", ...]
- Wyjściowy
N
element tej sekwencji (może być indeksowany 0).
Pamiętaj, aby twój kod był jak najkrótszy, ponieważ jest to wyzwanie dla golfa !
EDYCJA: Uważam, że zawsze istnieje jeden standardowy / preferowany sposób wyrażania liczb całkowitych jako cyfr rzymskich (jak 95
-> XCV
zamiastVC
). Kilka konwerterów cyfr rzymskich, które znalazłem w Internecie, potwierdza moje zdanie. W razie wątpliwości skorzystaj z konwertera online , ponieważ wyszczególnienie wszystkich możliwych przypadków brzegowych i szczegółowych zasad pisania cyfr rzymskich nie jest celem tego wyzwania.
EDIT2: @PeterTaylor i @GregMartin wskazał, że tylko liczby mniejsze lub równe 5
są wyświetlane w kolejności, więc nie trzeba się martwić o dwuznaczności cyframi rzymskimi (numery 1
- 8
są I
, II
, III
, IV
, V
, VI
, VII
, i VIII
)
4
/ IV
/ IIII
? Lub 95
/ XCV
/ VC
? Nie zawsze może istnieć wyjątkowy sposób wyrażenia liczby całkowitej, ale jestem pewien, że zawsze jest preferowany (standardowy) - popraw mnie, jeśli się mylę.