Описание задачи
У нас было несколько проблем, связанных с последовательностью Look-and-say . Быстрое напоминание:
- Последовательность начинается с
1
, - Последующие члены этой последовательности генерируются путем перечисления каждой группы повторяющихся цифр в предыдущем термине,
Итак, первые несколько терминов:
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"
Теперь давайте сделаем то же самое, но вместо этого будем использовать римские цифры . Мы начинаем с I
и следуем тем же правилам (вместо символов мы применяем правило подсчета цифр, поэтому читаем IVX
как one one, one five, one ten
вместо one four, one ten
или каким-либо другим способом):
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")
Учитывая положительное целое число N
, либо:
- Выведите первые
N
цифры этой последовательности (любой разумный разделитель в порядке, а также["I", "II", "III", ...]
- Выведите
N
th член этой последовательности (он может быть 0-индексирован).
Не забудьте сделать свой код как можно короче, так как это вызов для игры в гольф !
РЕДАКТИРОВАТЬ: Я считаю, что всегда есть один стандартный / предпочтительный способ выражения целых чисел в виде римских цифр (например, 95
-> XCV
вместо VC
). Несколько конвертеров римских цифр, которые я нашел в Интернете, подтверждают мое мнение. Если вы сомневаетесь, используйте онлайн-конвертер , поскольку перечисление всех возможных крайних случаев и конкретных правил написания римских цифр не является целью этой проблемы.
EDIT2: @PeterTaylor и @GregMartin отметили, что только цифры меньше или равно 5
в последовательности, так что вам не придется беспокоиться о неоднозначности римских цифр (номер 1
- 8
это I
, II
, III
, IV
, V
, VI
, VII
, и VIII
)
4
/ IV
/ IIII
? Или 95
/ XCV
/ VC
? Не всегда может быть уникальный способ выразить целое число, но я уверен, что всегда есть предпочтительный (стандартный) способ - поправьте меня, если я ошибаюсь.