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 I
e seguiamo le stesse regole (applichiamo invece la regola di conteggio delle cifre ai caratteri, quindi leggiamo IVX
come one one, one five, one ten
anziché one four, one ten
o 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
N
numeri di questa sequenza (anche qualsiasi separatore ragionevole va bene["I", "II", "III", ...]
- Emette
N
il 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
-> XCV
invece 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 5
comparire nella sequenza, in modo da non dovete preoccuparvi di l'ambiguità di numeri romani (numeri 1
- 8
sono 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.