Un tablero de ajedrez chino se ve así (basado en esta pregunta , pero esta vez tiene un tamaño fijo):
G
. G
G G G
G G . G
B B B B . . Y G . Y . Y Y
B B B . . G . . . Y Y Y
B . B . . . . . Y . Y
B . . . . . . . . Y
. . . . . . . . .
. P . . . . . O O .
P P . . . . . . . O O
P P P . . . R . . O O .
P P P P . . R . . O O O O
R . R R
R R R
R .
R
Cada carácter no espacial en este ejemplo se puede reemplazar por cualquier carácter ASCII que no se pueda imprimir en la entrada, mientras que los espacios nunca se cambian. Tenga en cuenta que no se garantiza que sea un acuerdo válido en el corrector chino (ya que puede no tener exactamente 7 tipos diferentes de caracteres).
Su tarea es rotarlo por un múltiplo de 60 grados.
Este es el ejemplo anterior girado 60 grados en sentido horario:
B
B B
B B B
B . B B
P P P . . . B . . G G . G
P P P P . . . . . G G G
P P . . . . . G Y . G
P . . . . . . . G G
. . . . . . . . .
R . . . . . . . . Y
R . R R . . . . Y Y .
R R R . . . O . . . Y Y
R . R R . . . O . Y Y Y Y
O O O .
O O O
O .
O
La entrada es un entero no negativo y un tablero de ajedrez chino. Su programa (o función) debe rotarlo por el entero * 60 grados. Usted decide si gira en sentido horario o antihorario, siempre que sea consistente. Tanto la entrada como la salida no deben tener espacios iniciales o finales adicionales.
Este es el código de golf. El código más corto gana.
fuente
_,,Sf*\.+W%ze_
.liq{_N/eeSf.*W%:szsS-\{_' >{;(}&\}/;]}@*
, pero estaba pensando en girar 60 grados, no 45 grados cuando escribía este desafío ...qN/(i{_eeSf.*W%:szSf-{},.{' f+sW<\,' e[}}*N*
es incluso más largo que el que tenía antes ...Python 2, 171 bytes
Esta es quizás la única vez que he encontrado
str.splitlines
útil, para todas las demás veces,.split("\n")
es más corto.Utilizar como
f(S,10)
.Explicación
Para cada carácter en la entrada, nosotros:
Para averiguar con qué carácter reemplazar, convertimos la cuadrícula a coordenadas de cubo
(x, y, z)
, rotamos losn
tiempos mediante la transformación(x, y, z) -> (-y, -z, -x)
, y luego volvemos a convertir.fuente