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