Desafio:
Dado um tabuleiro de damas, faça a menor quantidade de movimentos necessários (assumindo que o preto não se mova) para reinar uma peça vermelha, se possível.
Regras :
O lado do vermelho sempre estará no fundo, no entanto, suas peças podem começar em qualquer linha (até na linha do rei que eles precisam chegar). As peças pretas são fixas , o que significa que elas não se movem entre os movimentos do vermelho, mas são removidas do tabuleiro quando capturadas. Observe que as peças podem começar em qualquer espaço no tabuleiro, inclusive um ao lado do outro. Não é assim que as damas normais são jogadas, mas seu programa deve ser capaz de resolvê-las. (Consulte a entrada 5) No entanto, as peças do verificador devem se mover apenas na diagonal (consulte a entrada 3). A captura para trás é permitida se a primeira captura estiver para frente na cadeia (consulte a entrada 7).
Entrada:
Um tabuleiro de damas 8x8, com espaços no tabuleiro definidos como os seguintes caracteres (fique à vontade para usar alternativas, desde que sejam consistentes):
. - Vazio
R - Peça (s) vermelha (s)
B - peça (s) preta (s)
Resultado:
O menor número de movimentos que uma peça vermelha levaria para ser 'dominada' entrando na linha do rei na linha superior do tabuleiro (lado do preto), 0 se nenhum movimento fosse necessário (uma peça vermelha iniciada na linha do rei) ou um número negativo, se for impossível rei uma peça vermelha (ou seja, o preto ocupa toda a primeira linha).
Entrada 1:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Saída 1:
7
Entrada 2:
. . . . . . . .
. . . . . . . .
. . . . . B . .
. . . . . . . .
. . . B . . . .
. . . . . . . .
. B . . . . . .
R . . . . . . .
Saída 2:
2
Entrada 3:
. B . B . B . B
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Saída 3:
-1
Entrada 4:
. . . . . . . R
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Saída 4:
0
Entrada 5:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. B . . B . . .
B . . . . B . .
. B . B . . . .
. . B . . B . .
. . . R R . . .
Saída 5:
4
Entrada 6:
. . . . . . . .
. . . . . . . .
. B . . . . . .
. . B . . . . .
. B . B . . . .
. . . . R . . .
. . . B . . . .
. . . . R . . .
Saída 6:
2
Entrada 7:
. . . . . . . .
. . . . . . . .
. . B . . . . .
. . . . . . . .
. . B . . . . .
. B . B . B . .
. . . . B . . .
. . . . . R . R
Resultado 7:
4
Pontuação:
Isso é código-golfe , então o código mais curto em bytes vence.
fonte
Respostas:
JavaScript (ES6),
354bytesToma uma matriz como entrada com:
Retorna o número ideal de movimentos, ou 99, se não houver solução.
É muito rápido, mas poderia ser jogado muito mais.
fonte