你正在制造一个机器人,它可以导航一组不同高度的书籍。它可以爬上书,从书本上跳下来,但如果距离太大,它就会停下来,以防损坏。为了找到理想的设计,你正在编写一个模拟器。
您的程序将接受一个数字列表作为输入,表示书架上书籍的高度,以及表示机器人耐用性的数字。从清单的第一项开始,你的机器人将穿越书架。如果机器人的高度发生变化,只有当变化小于或等于机器人的耐久性时,它才能继续。您的工作是从0或1开始,输出机器人停在哪本书上。您可以放心地假设,机器人所在的第一本书的高度等于或低于机器人的耐用性。
这是密码-高尔夫,所以最短的答案获胜。
[1, 1, 1], 1 -> 3
[0, 1, 0], 0 -> 1
[1, 2, 3, 2], 1 -> 4
[1, 3, 4, 4, 0], 2 -> 4
[1, 3, 4, 4, 0, 1], 2 -> 4发布于 2022-01-31 21:41:58
dIf[Abs[#2-#]>d,0,1+#0@##2,0]&输入[durability][heights...]。返回0-索引。
If[Abs[#2-#]>d ] is the next height difference out of limits?
,0 yes: 0
,1+#0@##2 no : recurse on tail and add 1
,0 err: 0 (input len <2)发布于 2022-01-31 17:59:55
-6感谢@emanresu A
d=>f=([a,...x])=>(a-x[0])**2<=d*d&&-~f(x)d=>f=([a,...x])=>(a-x[0])**2<=d*d?f(x)+1:1递归解以输入通过赛跑,机器人耐用性第一。
依赖于NaN <= x始终是假的,保存检查以查看x是否足够长。
https://codegolf.stackexchange.com/questions/242108
复制相似问题