外观数列
首页
项目
百科
挑战
周边
捐赠
关于
拉格朗日计划
外观数列
外观数列的首项是1,之后每一项$a_n$都籍由观察$a_{n-1}$而得。
将$a_{n-1}$分割成若干段,每一段中各数位上的数字都相同,而相邻两段数位上的数字不同,而$a_n$就由各段的长度和该段数位上的数字拼接而成。
例如,若$a_{n-1}=111221$,那么它可以分成111、22、1三段,长度分别是3、2、1,数位上的数字分别是1、2、1,因此$a_n=312211$(即3个1,2个2,1个1)。
打印外观数列的前20项,每个数一行。
本题难度:
解答
用标准库的itertools.groupby得到分段信息后拼接输出。
最终代码有三行。
代码长度:99字节 vs. 全站第一:74字节。
from itertools import* x='1' exec('print(x);x="".join(str(len([*g]))+k for k,g in groupby(x));'*20)