Kolakoski dizisi ( OEIS A000002 ) şöyle tanımlanır:
Kolakoski sekansı içeren bir dizidir
1
ve2
ven
dizinin inci elemanı uzunluğun
dizisi kendisinde eşit olan bir eleman (çalıştırma) th grubu. Dizinin ilk 20 terimi ve ilgili uzunluklar: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
Esasen, Kolakoski dizisinin eşit eleman gruplarının uzunlukları Kolakoski dizisinin kendisidir.
Şimdiye kadar, çok iyi, ama neden kendimizi 1
ve ile sınırlamalıyız 2
? Yapmayacağız! Pozitif tamsayılar A
ve bir tamsayı dizisi olmak üzere iki girdi göz önüne alındığında, döngü yoluyla tanımlanan Kolakoski benzeri dizinin N
ilk N
terimlerini döndürür A
. Daha iyi kavramak için, yeni eklenen grupların uzunluklarının köşeli parantez içinde çalıştığı bir örnek:
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 ]
İşte önde gelen bir başka örnek 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 ]
Yukarıda görebileceğiniz gibi, nihai sonuç N = 10
unsurlara kesildi . n
İnci elemanı ne kadar uzun olmalıdır n
eşit eleman inci grubu, elemanın kendisinin de değinmektedir grubuna ait olsa bile. Yukarıdaki durumda 1
olduğu gibi, birincisi, sadece bu 1
olan ilk 2
gruba, birincisi ise onunla başlayan ikinci gruba karşılık gelir.
kurallar
- Bunun
A
asla iki veya daha fazla ardışık eşit öğeye sahip olmayacağını varsayabilirsiniz .A
birden fazla kez bir tamsayı içerebilir, fakat birinci ve son elemanları eşit olmayacaktır, veA
en az 2 öğeleri içerebilir (örneğin[1, 2, 2, 3]
,[2, 4, 3, 1, 2]
ve[3]
verilecek olacak değildir). Çünkü ardışık eşit elemanlar olsaydı, nihai sonuç böyle bir sıra için geçersiz bir önek olurdu. A
Yalnızca pozitif tamsayılar içerdiğini varsayabilirsiniz (bu tür bir dizi başka türlü tanımsız olur).N
Negatif olmayan bir tamsayı (N >= 0
) olduğunu varsayabilirsiniz .- İstediğinizden daha fazla terim iade edemezsiniz.
- Standart boşluklardan herhangi birini kullanmak kesinlikle yasaktır.
- Herhangi bir makul I / O yöntemi kullanabilirsiniz .
- Cevabınız doğal dil sınırlarının ötesinde çalışmak zorunda değildir, ancak teoride algoritmanız keyfi olarak büyük girdiler ve tamsayılar için çalışmalıdır .
- Bu kod golf , bu yüzden en kısa cevap kazanır.
Test senaryoları
[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]