Ось так визначається послідовність Колакоскі (OEIS A000002 ):
Послідовність Колакоскі - це послідовність, яка містить
1і2, аnй елемент послідовності - це довжина третьоїnгрупи рівних елементів (запуску) у самій послідовності. Першими 20 членами послідовності та відповідними довжинами є:1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 - --- --- - - --- - --- --- - --- --- - 1 2 2 1 1 2 1 2 2 1 2 2 1По суті, довжини груп рівних елементів послідовності Колакоскі є самою послідовністю Колакоскі.
Поки так добре, але що, чому ми повинні обмежувати себе 1і 2? Ми не збираємось! Давши два входи, масив додатних цілих чисел Aі ціле число N, повертають перші Nчлени послідовності, схожі на Колакоскі, визначені перемиканням наскрізь A. Щоб краще зрозуміти це, ось опрацьований приклад із довжиною ново доданих груп у дужках:
A = [2, 3, 1]
N = 25
2: [[2], 2 ]
3: [ 2 ,[2], 3 , 3 ]
1: [ 2 , 2 ,[3], 3 , 1 , 1 , 1 ]
2: [ 2 , 2 , 3 ,[3], 1 , 1 , 1 , 2 , 2 , 2 ]
3: [ 2 , 2 , 3 , 3 ,[1], 1 , 1 , 2 , 2 , 2 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 ,[1], 1 , 2 , 2 , 2 , 3 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 ,[1], 2 , 2 , 2 , 3 , 1 , 2 ]
3: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 ,[2], 2 , 2 , 3 , 1 , 2 , 3 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 ,[2], 2 , 3 , 1 , 2 , 3 , 3 , 1 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 ,[2], 3 , 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 ]
3: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 ,[3], 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 ,[1], 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 1 ,[2], 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 , 2 , 2 ]
C: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 , 2 , 2 ]
Ось ще один відпрацьований приклад з ведучим 1:
A = [1, 2, 3]
N = 10
1: [[1]]
2: [ 1 ,[2], 2 ]
3: [ 1 , 2 ,[2], 3 , 3 ]
1: [ 1 , 2 , 2 ,[3], 3 , 1 , 1 , 1 ]
2: [ 1 , 2 , 2 , 3 ,[3], 1 , 1 , 1 , 2 , 2 , 2 ]
C: [ 1 , 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 ]
Як видно вище, кінцевий результат вирізали на N = 10елементи. n- Й елемент повинен бути , як довго nй рівноапостольної групи елементів, навіть якщо сам елемент належить до групи він відноситься. Як і у вищенаведеному випадку, перша 1стосується першої такої групи, яка є саме цим 1, а перша 2стосується другої такої групи, яка починається з неї.
Правила
- Ви можете припустити, що
Aніколи не буде двох і більше послідовних рівних елементів.Aможе містити ціле число більше одного разу, але перший і останній елементи не будуть рівними іAмістять щонайменше 2 елементи (наприклад[1, 2, 2, 3],[2, 4, 3, 1, 2]і[3]не збираються даватись). Це тому, що якби були послідовні рівні елементи, кінцевий результат був би недійсним префіксом для такої послідовності. - Ви можете припустити, що
Aмістить лише додатні цілі числа (оскільки така послідовність була б інакше невизначеною). - Ви можете припустити
N, що це невід'ємне ціле число (N >= 0). - Ви не можете повернути більше термінів, ніж просили.
- Використовувати будь-яку зі стандартних лазів , категорично заборонено.
- Ви можете використовувати будь-який розумний метод вводу / виводу .
- Ваша відповідь не повинна працювати за межами природних мов, але теоретично ваш алгоритм повинен працювати для довільно великих входів та цілих чисел .
- Це код-гольф , тому найкоротша відповідь виграє.
Тестові справи
[5, 1, 2], 0 -> []
[2, 3, 1], 25 -> [2, 2, 3, 3, 1, 1, 1, 2, 2, 2, 3, 1, 2, 3, 3, 1, 1, 2, 2, 3, 3, 3, 1, 2, 2]
[1, 2, 3], 10 -> [1, 2, 2, 3, 3, 1, 1, 1, 2, 2]
[1, 2], 20 -> [1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1]
[1, 3], 20 -> [1, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 3]
[2, 3], 50 -> [2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3]
[7, 4], 99 -> [7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4]
[1, 2, 3], 5 -> [1, 2, 2, 3, 3]
[2, 1, 3, 1], 2 -> [2, 2]
[1, 3, 5], 2 -> [1, 3]
[2, 3, 2, 4], 10 -> [2, 2, 3, 3, 2, 2, 2, 4, 4, 4]