Игра Семерок ведется следующим образом: 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
.) Я не говорю, что это лучше или хуже с точки зрения его задачи: просто это было бы более полезно в реальном мире.