Kolakoski序列
首页
项目
百科
挑战
周边
捐赠
关于
拉格朗日计划
Kolakoski序列
Kolakoski序列是一种自描述序列,它的第一和第二项是1,2,其它所有项也仅由数字1和2组成。
该序列中的项由这样的规则决定,把序列中由相同数字组成的连续子列分为一组,如此得到若干组,序列的第n项$K_n$就是第n组的长度。
例如该序列的前几项依次是1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 2 1 1 2 1。。。
生成过程如下:
按给定的初值有$K_1=1\neq2=K_2$,因此第一组就是$K_1=1$,它的长度也是$K_1=1$。
第二组以2开头,它的长度是$K_2=2$,因此第三个数$K_3=2$。
从而第三组以$K_4=1$起,长度应该是$K_3=2$,因此$K_5$也等于1。
从而第三组以$K_6=2$起,长度应该是$K_4=1$,。。。。以此类推。
在一行中打印该序列的前1000项,相邻两项间用一个空格隔开。
注:原题面不甚清晰,此处作了详细的补充和解释。
本题难度:
解答
按组号遍历生成该序列即可。
最终代码有三行。
代码长度:60字节 vs. 全站第一:52字节。
a,i=[1,2,2],2 while i<666:a+=[i%2+1]*a[i];i+=1 print(*a+[1])