El juego de Sevens se juega de la siguiente manera: los n
jugadores se sientan en círculo y comienzan a contar desde 1, pasando a la izquierda (o de jugador A
a jugador B
).
Cuando se alcanza un número p
que tiene un 7
OR dentro del cual es divisible 7
, entonces el jugador que pronunció el número p-1
, después del siguiente jugador dice p
, debe decir p+1
y el orden de las personas que hablan se invierte. Por ejemplo, si el jugador B
habla 6
, el jugador C
dice 7
, B
dice 8
y el jugador A
dice 9
.
Nota: Para aquellos que quieren jugar en la vida real, si una persona olvida un número (o en la versión donde sevens
no se dice, accidentalmente dice a seven
), se elimina del círculo, pero omitiremos este detalle de este desafío.
El desafío en sí mismo es imprimir qué números debe decir cada jugador en un juego perfecto de Sevens hasta una entrada m
para un n
jugador de entrada .
A modo de ejemplo, donde cinco personas, A
, B
, C
, D
, y E
, son para jugar hasta que lleguen 30
. Ellos juegan de esta manera
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
donde sevens
están marcados con *
. Tenga en cuenta que en 27
y 28
, estamos retrocediendo dos veces, y el juego continúa "normalmente" de D
a E
.
Tenga en cuenta que la salida no tiene que estar en el formato anterior. Simplemente lo imprimí de esa manera para mayor claridad.
Reglas
La entrada es de dos enteros en cualquier orden,
m
representando el último número para decir,n
representando el número de jugadores.La salida puede ser varias matrices o varias cadenas, una para cada jugador. Si usa cadenas, no tiene que usar separadores (sin embargo, si pudiera agregar algunos en sus pruebas de código, agradeceríamos la legibilidad). Si realmente puede imprimirlos en un círculo de alguna manera, eso también es aceptable, y también sería genial.
La salida no tiene que designar qué jugadores son cuáles (es bastante obvio que el primer jugador es el que dice
1
), aunque si la salida no está ordenada por alguna razón, debe dejar en claro qué jugador está hablando qué conjunto de números . Omitir jugadores que no dicen nada también está permitido si dejas en claro qué jugadores están hablando. Agregaré algunos ejemplos más de posibles resultados a continuación.Este es el código de golf, por lo que gana el menor número de bytes.
Como siempre, si el problema no está claro, hágamelo saber. ¡Buena suerte y buen golf!
Ejemplos
>>> 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
). No estoy diciendo que sea mejor o peor en términos de desafío: solo que sería más útil en el mundo real.