Descripción del desafío
Hemos tenido algunos desafíos relacionados con la secuencia de mirar y decir . Recordatorio rápido:
- La secuencia comienza con
1
, - Los términos posteriores de esta secuencia se generan enumerando cada grupo de dígitos repetidos en el término anterior,
Entonces, los primeros términos son:
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"
Ahora hagamos lo mismo, pero use números romanos en su lugar. Comenzamos con I
y seguimos las mismas reglas (aplicamos la regla de conteo de dígitos a los caracteres en su lugar, así que leemos IVX
como en one one, one five, one ten
lugar de one four, one ten
o de alguna otra manera):
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")
Dado un entero positivo N
, ya sea:
- Imprime los primeros
N
números de esta secuencia (cualquier separador razonable está bien, así como["I", "II", "III", ...]
N
Término de salida de esta secuencia (puede estar indexado a 0).
Recuerde hacer su código lo más corto posible, ya que este es un desafío de código de golf .
EDITAR: Creo que siempre hay una forma estándar / preferida de expresar enteros como números romanos, (como 95
-> en XCV
lugar de VC
). Un par de convertidores de números romanos que encontré en línea corroboran mi opinión. En caso de duda, utilice un convertidor en línea , ya que enumerar todos los casos límite posibles y las reglas específicas de escribir números romanos no es el punto de este desafío.
Edit2: @PeterTaylor y @GregMartin señalaron que sólo los números menores o iguales a 5
aparecer en la secuencia, por lo que no tiene que preocuparse por la ambigüedad de los números romanos (números 1
- 8
son I
, II
, III
, IV
, V
, VI
, VII
, y VIII
)
4
/ IV
/ IIII
? O 95
/ XCV
/ VC
? Puede que no siempre haya una forma única de expresar un número entero, pero estoy bastante seguro de que siempre hay uno preferido (estándar): corrígeme si me equivoco.