挑战
按字符数计算的最短代码将输出 Morris Number Sequence 。 莫里斯数列,也称为看即说序列,是一个数字序列,开头如下:
1, 11, 21, 1211, 111221, 312211, ...
您可以无限地生成序列(即,您不必生成特定的数字)。
I/O 预期
该程序不需要接受任何输入(但是接受输入会获得奖励积分,从而提供从任意起点或数字开始的选项)。至少你的程序必须从 1
开始。
输出至少应为以下序列:
1
11
21
1211
111221
312211
...
额外积分
如果您想要获得额外的学分,您需要执行以下操作:
$ morris 1
1
11
21
1211
111221
312211
...
$ morris 3
3
13
1113
3113
132113
...
最佳答案
GolfScript - 41(额外学分:40)
1{.p`n+0:c:P;{:|P=c{c`P|:P!}if):c;}%~1}do
{~.p`n+0:c:P;{:|P=c{c`P|:P!}if):c;}%1}do
什么?
获取序列中下一个数字的过程:将当前数字转换为字符串,附加换行符并循环遍历字符。对于每个数字,如果前一个数字 P
相同,则递增计数器 c
。否则,将 c
和 P
添加到下一个数字中,然后更新这些变量。我们附加的换行符允许将最后一组数字添加到下一个数字。
确切的细节可以通过查看 GolfScript 文档获得。 (请注意,|
用作变量。)
关于language-agnostic - Code Golf : Morris Sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908513/