彼得和他的伙伴布赖恩在健身房,而布莱恩突然急需他的吸入器。布赖恩设法告诉彼得的密码,他的组合锁,然后他崩溃在地板上。
当彼得来到布赖恩的储物柜,看到指示灯指向什么的时候,斯图伏击了他,并在他的脸上喷了一大罐胡椒喷雾,从而使彼得失明。
彼得现在必须设法打开锁,而不看它。他开始把刻度盘向右转,一边数着数字,一边经过。然后,在正确的数字开始把刻度盘向左转,还在计数,最后把它转到右边,直到锁打开。
编写一个函数/程序,该函数/程序接受两个输入,来自Brian的组合和指示器位置。输出彼得必须数数的数字。
规则:
要打开下面的锁,您需要遵循一组说明:

示例:
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适用标准的高尔夫球规则。
稍后发布的解决方案如果短于丹尼斯的回答,仍有可能获胜。
发布于 2017-08-17 06:53:36
感觉好长啊。但是也有很多事情在进行。
def f(l,s):
r=lambda a,b,c=1:range(a,b,c)
a=r(39,l[0],-1);b=r(l[0],-1,-1)
c=r(l[1],l[2]-1,-1)if l[2]<l[1]else r(l[1],-1,-1);c.extend(r(39,l[2]-1,-1))
return' '.join(`x`for x in sum([r(s,-1,-1),a,b,a,b,a,b,r(39,l[0],-1),r(l[0],40),r(0,40),r(0,l[1]+1),c],[]))我认为我可以更好地连接在我的最后一行,但我仍然是新的代码高尔夫,我不知道如何处理这个列表组合在短期内。
有什么改进的办法吗?
https://codegolf.stackexchange.com/questions/62118
复制相似问题