Fannkuch是一个经典的基准程序。该名称来自德语“ Pfannkuchen”(煎饼),该算法类似于翻转煎饼叠。Fannkuch的数字序列形成如下:
以{1 ..... n}的排列为例,例如:{4,2,1,5,3}。取第一个元素(这里为4),并颠倒前四个元素的顺序:{5,1,2,4,3}。重复此操作,直到第一个元素为1,这样翻转就不再更改:{3,4,2,1,5},{2,4,3,1,5},{4,2,3, 1,5},{1,3,2,4,5}
您将要编写一个程序或函数来为字母字符串计算出类似于Fannkuch的序列。应该使用字母在字母表中的位置,而不是使用数字来指示每次应翻转列表中的多少元素。例如,前导c
表示您应该颠倒前3个元素的顺序,而前导a
表示序列已完成。
输入值
输入将通过stdin作为字符串或作为函数参数提供。该字符串将包含1到26个不同的小写字母。字符串将不包含字母,这些字母的等效索引将导致Fannkuch算法翻转比现有数量更多的元素。
输出量
程序或函数应返回或打印以输出通过应用Fannkuch算法产生的术语序列,直到a
遇到前导为止,包括初始字符串。例如,如果输入为bca
,则可以打印:
bca
cba
abc
打印的结果可以使用任何合理的分隔符-逗号,换行符等。可以选择任何空白。
再举一个例子,如果输入的是eabdc
您可能会返回:
("eabdc"
"cdbae"
"bdcae"
"dbcae"
"acbde")
规则和计分
这是代码高尔夫球 -最短的程序获胜。不允许使用标准漏洞。
proc fcmp
在这里没有很多。