Escriba un programa que, al mirar una mesa de ajedrez, pueda decir si hay un cheque o un jaque mate.
Entrada : una tabla de ajedrez en forma de texto, siendo la última línea de entrada la primera fila (la línea de inicio de las blancas)
La posición inicial en esta entrada se vería así (el espacio es un cuadrado vacío, las letras mayúsculas son blancas): ¿por qué no se muestran los espacios aquí?
rnbqkbnr
pppppppp
PPPPPPPP
RNBQKBNR
El programa debe imprimir uno o más de los siguientes (sin comillas, por supuesto), dependiendo de la situación:
- "¡El Rey Blanco está bajo control!" (si ya está en jaque mate, ¡no muestres esto!)
- "¡El Rey Negro está bajo control!" (si ya está en jaque mate, ¡no muestres esto!)
- "¡El Rey Blanco está en jaque mate!"
- "¡El Rey Negro está en jaque mate!"
- "¡White está en un punto muerto!" (Habría un estancamiento si las blancas se mudaran - opcional )
- "¡Black está en un punto muerto!" (Habría un estancamiento si las negras se movieran - opcional )
- "Ambos reyes están a salvo por ahora". (si no se aplica ninguno de los anteriores)
Se garantiza que la entrada sea correcta y sea una posición legal de ajedrez (no hay dos reyes del mismo color, no hay dos reyes bajo control, etc.).
Puntuación:
El puntaje es el recuento de caracteres, las victorias más bajas, no antes de 10 días después de la primera respuesta válida. Si se implementa la evaluación opcional de estancamiento, el tamaño se reducirá en un 20% (para esta situación, suponga que no se puede realizar la transferencia).
Respuestas:
C, 837-20% = 669.6 caracteres
Basado en esta respuesta . Puede ver algunas explicaciones sobre la implementación allí.
El original se juega bastante bien, las modificaciones no tanto, por lo que hay margen de mejora.
Tampoco me sorprendería encontrar errores, mi control de calidad no fue muy riguroso.
fuente