Escreva um programa que, ao olhar para uma mesa de xadrez, possa dizer se existe um cheque ou um xeque-mate.
Entrada : uma tabela de xadrez em forma de texto, a última linha da entrada sendo a primeira classificação (a linha inicial de Branco)
A posição inicial nesta entrada ficaria assim (o espaço é um quadrado vazio, as letras maiúsculas são brancas): por que os espaços não são exibidos aqui?
rnbqkbnr
pppppppp
PPPPPPPP
RNBQKBNR
O programa deve imprimir um ou mais dos seguintes itens (sem aspas, é claro), dependendo da situação:
- "O rei branco está em xeque!" (se já estiver no xeque-mate, não exiba isso!)
- "O rei negro está em xeque!" (se já estiver no xeque-mate, não exiba isso!)
- "O rei branco está em xeque-mate!"
- "O rei negro está em xeque-mate!"
- "Branco está em impasse!" (Haveria um impasse se as brancas se movessem - opcional )
- "Preto está em impasse!" (Haveria um impasse se as pretas se movessem - opcional )
- "Ambos os reis estão seguros por enquanto." (se nenhuma das opções acima se aplicar)
A entrada é garantida como correta e é uma posição legal no xadrez (não há dois reis da mesma cor, não há dois reis em xeque, etc.).
Ponto:
A pontuação é a contagem de caracteres, vitórias mais baixas, não antes de 10 dias após a primeira resposta válida. Se a avaliação opcional do impasse for implementada, o tamanho será reduzido em 20% (para esta situação, suponha que o passante não possa ser executado).
Respostas:
C, 837-20% = 669,6 caracteres
Com base nesta resposta . Você pode ver algumas explicações sobre a implementação lá.
O original é muito bem jogado, as modificações nem tanto, então há espaço para melhorias.
Eu também não ficaria surpreso ao encontrar bugs, meu controle de qualidade não era muito rigoroso.
fonte