Um tabuleiro de damas chinês se parece com este (com base nesta pergunta , mas desta vez com um tamanho fixo):
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 caractere não espacial neste exemplo pode ser substituído por qualquer caractere ASCII imprimível não espacial na entrada, enquanto os espaços nunca são alterados. Observe que não é garantido que seja um arranjo válido no verificador chinês (como talvez não tenha exatamente 7 tipos diferentes de caracteres).
Sua tarefa é girá-lo em um múltiplo de 60 graus.
Este é o exemplo acima girado 60 graus no sentido horário:
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
A entrada é um número inteiro não negativo e um tabuleiro de damas chinês. Seu programa (ou função) deve girá-lo pelo número inteiro * 60 graus. Você decide se gira no sentido horário ou anti-horário, desde que seja consistente. Tanto a entrada como a saída não devem ter espaços iniciais ou finais extras.
Isso é código-golfe. O menor código vence.
fonte
_,,Sf*\.+W%ze_
.liq{_N/eeSf.*W%:szsS-\{_' >{;(}&\}/;]}@*
, Mas eu estava pensando em rotação em 60 graus, e não 45 graus quando eu estava escrevendo este desafio ...qN/(i{_eeSf.*W%:szSf-{},.{' f+sW<\,' e[}}*N*
é ainda mais do que o que eu tinha antes ...Python 2, 171 bytes
Esta é talvez a única vez que eu achei
str.splitlines
útil - para todas as outras vezes,.split("\n")
é mais curta.Use como
f(S,10)
.Explicação
Para cada caractere na entrada, nós:
Para descobrir qual caractere substituir, convertemos a grade em coordenadas do cubo
(x, y, z)
, giramos osn
tempos transformando(x, y, z) -> (-y, -z, -x)
e depois convertemos de volta.fonte