“ Sevens”游戏的玩法如下:n
玩家围成一个圈,从1开始向上计数,然后向左移动(或从一个玩家A
到另一个玩家B
)。
当一个数p
,有一个7
在它或者被整除7
达到,那么谁说话数量的球员p-1
,未来的球员说之后p
,必须说p+1
和人说话颠倒顺序。例如,如果球员B
说6
,球员C
说7
,B
说8
,和球员A
说9
。
注意:对于那些想在现实生活中玩游戏的人,如果一个人忘记了一个数字(或者在sevens
未说过的版本中,偶然说了一个seven
),则将他们从圈子中删除,但是我们将在此挑战中忽略此细节。
挑战本身就是打印在七人制足球的完美游戏中每个玩家应该说出的数字,直到m
输入n
玩家的输入。
作为一个例子,其中五人,A
,B
,C
,D
,和E
,是玩,直到他们到达30
。他们以这种方式玩
A: 1 6 8 13 15 19 23 30
B: 2 7* 12 16 18 24
C: 3 11 17* 25
D: 4 10 21* 26 28*
E: 5 9 14* 20 22 27*29
其中sevens
标有*
。请注意,在27
和28
,我们进行了两次反转,并且从D
到正常播放E
。
请注意,输出不必采用上述格式。我只是以某种方式将其打印出来,以使其更加清晰。
规则
输入是任意顺序的两个整数,
m
代表要说的最后一个数字,n
代表玩家的数量。输出可以是多个数组或多个字符串,每个播放器一个。如果使用字符串,则不必使用分隔符(尽管,如果可以在代码测试中添加一些分隔符,我们将不胜感激。)如果您实际上可以某种方式将它们打印成一个圆圈,那也是可以接受的,而且也很酷。
输出不必指定哪个玩家是哪个玩家(很明显,第一个玩家是说的那个人
1
),但是如果由于某种原因未对输出进行排序,则应弄清楚哪个玩家在说哪个数字集。如果您明确指出哪些玩家正在说话,也可以忽略不说话的玩家。我将在下面添加更多可能的输出示例。这是代码高尔夫,因此最少的字节数获胜。
与往常一样,如果问题仍然不清楚,请告诉我。祝你好运,打高尔夫球!
例子
>>> sevens_string(30, 5, " ")
'1 6 8 13 15 19 23 30'
'2 7 12 16 18 24'
'3 11 17 25'
'4 10 21 26 28'
'5 9 14 20 22 27 29'
>>> sevens_string(42, 5)
'16813151923303539'
'27121618243140'
'31117253241'
'410212628333742'
'591420222729343638'
>>> sevens_array(20, 3)
[1, 4, 7, 10, 13, 15, 19]
[2, 5, 9, 12, 16, 18]
[3, 6, 8, 11, 14, 17, 20]
>>> sevens_array(18, 10)
[1, 13, 15]
[2, 12, 16, 18]
[3, 11, 17]
[4, 10]
[5, 9]
[6, 8]
[7]
[]
[]
[14]
1 2 3 4 1 2 3 2 1 4 3 2 1 4 1
。)我并不是说他的挑战会更好或更糟:只是它在现实世界中会更有用。