我的炉子上有10种不同的热量设置(从0到9),还有一种非常奇怪的循环方式。
+)时,它会增加这个数字,除非这个数字是9,在这种情况下,它变成0,或者这个数字是0,在这种情况下,它变成9。-)时,它会减少这个数字,除非这个数字是零,在这种情况下,它变成了4。没有其他温度控制按钮。
所以当我在一种温度下烹饪,而我想换另一种温度的时候,找出达到这个温度的最简单的方法总是有点困惑。
在这个挑战中,你将取一个起始温度和一个期望的温度,并给出按钮按下的最短顺序,从起始温度到期望的温度。
您应该将输入作为0-9范围内的两个整数,并输出一系列指令。您可以将指令输出为字符/字符串、+和-或数字1和-1。如果有两个同样最小的序列,您可以输出其中一个,或者两者都输出。
这是密码-高尔夫,所以目标是按照字节数来最小化源代码的大小。
0 0 -> ""
0 1 -> "----"
0 2 -> "---"
0 3 -> "--"
0 4 -> "-"
0 5 -> "-+"
0 6 -> "-++"
0 7 -> "+--"
0 8 -> "+-"
0 9 -> "+"
1 0 -> "-"
1 1 -> ""
1 2 -> "+"
1 3 -> "++"
1 4 -> "--"
1 5 -> "--+"
1 6 -> "--++"
1 7 -> "-+--"
1 8 -> "-+-"
1 9 -> "-+"
2 0 -> "--"
2 1 -> "-"
2 2 -> ""
2 3 -> "+"
2 4 -> "++"
2 5 -> "+++"
2 6 -> "++++"
2 7 -> "+++++" or "--+--"
2 8 -> "--+-"
2 9 -> "--+"
8 0 -> "++"
8 1 -> "++----"
8 2 -> "++---"
8 3 -> "++--"
8 4 -> "++-"
8 5 -> "---"
8 6 -> "--"
8 7 -> "-"
8 8 -> ""
8 9 -> "+"
9 0 -> "+"
9 1 -> "+----"
9 2 -> "+---"
9 3 -> "+--"
9 4 -> "+-"
9 5 -> "+-+"
9 6 -> "---"
9 7 -> "--"
9 8 -> "-"
9 9 -> ""发布于 2022-02-08 15:55:25
发布于 2022-02-08 15:30:16
g=(q,r)=>(o=[],f=((v,r)=>!o[r]||v.length<o[r].length?(o[r]=v,f(v+'+',r?(r+1)%10:9),f(v+'-',r?r-1:4)):0),f('',q),q==r?'':o[r])发布于 2022-02-09 02:01:13
t=>g=(s,o='',...r)=>s-t?g(...r,s%9?s+1:9-s,o+'+',s?s-1:4,o+'-'):of=lambda t,s,o="",*r:s-t and f(t,*r,[9-s,s+1][0<s<9],o+"+",[4,s-1][0<s],o+"-")or ohttps://codegolf.stackexchange.com/questions/242543
复制相似问题