Um saltador é uma categoria de peça de xadrez de fada que se move "pulando". Um cavaleiro normal é um (1,2) -leaper, significando que cada movimento envolve mover uma distância de 1 quadrado em uma direção ortogonal e 2 quadrados na direção perpendicular.
.o.o.
o...o
..N..
o...o
.o.o.
Existem muitos saltadores diferentes. O (1,3) -leaper é chamado de Cavaleiro Longo, ou Camelo. Seu padrão de movimento é assim:
..o.o..
.......
o.....o
...L...
o.....o
.......
..o.o..
Há também o (2,2) Alfil ...
o...o
.....
..A..
.....
o...o
... e até o (0,1) Wazir.
.o.
oWo
.o.
Desafio
Dado um par de números como entrada, imprima o diagrama de movimento correspondente. Você pode escrever um programa ou função, com a entrada fornecida via STDIN / linha de comando ou como argumento, e a saída fornecida por STDOUT ou o valor de retorno. Isso é código-golfe .
Entrada
A entrada será uma lista separada por vírgula de dois números inteiros e uma letra maiúscula. Os dois números inteiros estarão no intervalo 0-7
(inclusive) e em ordem não decrescente. Trailing newline opcional para entrada e saída.
Aqui estão as entradas para os quatro exemplos acima:
1,2,N
1,3,L
2,2,A
0,1,W
Resultado
A saída será uma sequência multilinha em formato quadrado. A letra maiúscula será colocada no centro para representar a localização atual da peça. Os locais dos movimentos serão representados por 4 ou 8 letras minúsculas o
. Todos os outros espaços da praça serão preenchidos com pontos.
Se o padrão de movimento for 0,0
, imprima apenas a letra maiúscula.
Como sugestão, se o segundo inteiro (o maior) tiver valor N, o quadrado sempre terá o comprimento lateral 2N + 1. Os o
sempre estarão no perímetro do quadrado.
Casos de teste adicionais
1,1,F
o.o
.F.
o.o
5,7,Q
..o.........o..
...............
o.............o
...............
...............
...............
...............
.......Q.......
...............
...............
...............
...............
o.............o
...............
..o.........o..
0,0,J
J
Respostas:
Ruby, 107
Ungolfed in program program
fonte
Pitão, 40 bytes
Estou aprendendo Pyth! Experimente .
Explicação
fonte
JavaScript (ES6),
163161145 bytesOnde
\n
está o caractere literal da nova linha. Funciona gerando o quadrante inferior direito e espelhando-o nos dois eixos.Editar: salvou 2 bytes graças a @ edc65.
(Cheguei aqui por meio de uma pergunta duplicada que permitiu um resultado de matriz que seria 19 bytes mais curto, mas não garantiu a ordem não decrescente, que desperdiçou 8 bytes.)
fonte
fill
e uma nova linha literal\n
está o caractere literal da nova linha" quando faço isso), mas obrigado pela outra dica.JavaScript (ES6) 144
150Menos golfe
Teste
fonte