场景是:
当Brian突然需要他的吸入器时,Peter和他的伙伴Brian在健身房。Brian倒在地板上之前设法告诉Peter密码到他的密码锁。
当彼得到达Brian的储物柜并看到指示器所指的那一刻,Stewie伏击了他,并在他的脸上喷了满罐胡椒粉,使Peter蒙蔽了双眼。
彼得现在必须尝试打开锁而不要看它。他开始将表盘向右旋转,并在传递数字时对数字进行计数。然后,他以正确的数字开始将表盘向左旋转,仍在计数,最后将其向右旋转直到锁打开。
挑战:
编写一个函数/程序,它接受两个输入,即来自Brian的组合和指示器位置。输出彼得必须数的数字。
规则:
- 组合和指标位置必须是单独的参数。
- 输入可以来自命令提示符,也可以作为函数参数。
- 输出必须打印到屏幕上/否则显示(不记录到文件中)
- 假定起始位置与第一个数字不同,并且组合中的所有三个数字都是唯一的
- 下图所示为锁,可能的数字为0-39。
说明:
要打开下面的锁,您需要按照以下说明进行操作:
- 您必须知道您的代码。假设现在是(38,16,22)。
- 将拨盘向右旋转3次(通过起始数字3次),然后在第一个数字(38)与指示器对准时停止
- 将拨盘向左旋转1圈,传递第一个数字,并在第二个数字(16)与指示器对齐时停止。
- 将拨盘向右旋转,并在第三个数字(22)与指示器对准时停止
- 拉下锁
例:
Input
38 16 22
33
Output
33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22
适用标准代码高尔夫规则。
如果发布的解决方案比丹尼斯的答案短,则仍然可以获胜。
@CᴏɴᴏʀO'Bʀɪᴇɴ,有效点... :-)但是:1.我们所谈论的彼得人并不是棚子里最犀利的工具。2.您不想将代码告诉别人。3.谁知道,也许Stewie有备用的喷雾罐..?
—
Stewie Griffin
啊对。炖肉有无限罐胡椒喷雾,对吗?哈哈:3
—
Conor O'Brien 2015年
我们可以使用仍然打开该锁的替代算法吗?
—
bmarks 2015年
彼得需要学习武术。(为什么布赖恩(Brian)倒闭时,为什么健身房里没有教练?预算削减了?;)
—
kirbyfan64sos 2015年
function combination(code){alert("Help! Someone open this locker, the combination is "+code+"!")}