Descrizione della sfida
Abbiamo avuto alcune sfide che coinvolgono la sequenza Look-and-say . Promemoria rapido:
- La sequenza inizia con
1, - I termini successivi di questa sequenza sono generati elencando ogni gruppo di cifre ripetute nel termine precedente,
Quindi i primi termini sono:
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"
Ora facciamo la stessa cosa, ma utilizziamo invece i numeri romani . Iniziamo con Ie seguiamo le stesse regole (applichiamo invece la regola di conteggio delle cifre ai caratteri, quindi leggiamo IVXcome one one, one five, one tenanziché one four, one teno in altro modo):
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")
Dato un numero intero positivo N, sia:
- Emette i primi
Nnumeri di questa sequenza (anche qualsiasi separatore ragionevole va bene["I", "II", "III", ...] - Emette
Nil termine di questa sequenza (può essere indicizzato 0).
Ricorda di rendere il tuo codice il più breve possibile, poiché questa è una sfida di code-golf !
EDIT: credo che ci sia sempre un modo standard / preferito di esprimere numeri interi come numeri romani, (come 95-> XCVinvece di VC). Coppia di convertitori di numeri romani che ho trovato online confermano la mia opinione. In caso di dubbio, utilizzare un convertitore online , poiché l'elenco di tutti i casi limite e le regole specifiche per la scrittura di numeri romani non è il punto di questa sfida.
EDIT2: @PeterTaylor e @GregMartin sottolineato che solo i numeri minore o uguale a 5comparire nella sequenza, in modo da non dovete preoccuparvi di l'ambiguità di numeri romani (numeri 1- 8sono I, II, III, IV, V, VI, VII, e VIII)
4/ IV/ IIII? Oppure 95/ XCV/ VC? Potrebbe non esserci sempre un modo unico per esprimere un numero intero, ma sono abbastanza sicuro che ce ne sia sempre uno preferito (standard): correggimi se sbaglio.