En este desafío, debes dibujar el tablero de ajedrez a continuación y permitir que se realicen movimientos.
1. Dibujo
Cada cuadrado blanco tiene 5x9 espacios.
Cada cuadrado negro tiene 5x9 colones.
El tablero está rodeado por un borde de dos puntos.
Las piezas tienen 5 caracteres de ancho y se ubican en la fila inferior del cuadrado en el centro.
Los peones tienen 4 caracteres de ancho. Se sientan ligeramente descentrados a la derecha, con 3 cuadrados en blanco a la izquierda y 2 cuadrados en blanco a la derecha. Se sientan una línea sobre la parte inferior del cuadrado.
No habrá espacios en blanco fuera del área del tablero, con la excepción de una nueva línea final opcional.
El tablero y las piezas de ajedrez se dibujarán exactamente como se muestra, excepto que:
Puede sustituir el símbolo
:
en los cuadrados y bordes negros por un símbolo diferente, y puede sustituir el@
símbolo diferente en las piezas negras (pero no el mismo que se usa para los cuadrados negros).Puedes mover los peones un personaje a la izquierda si lo deseas.
.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: ::::::::: :::www::: _+_ ::::::::: ::::::::::
: |_|_| :: _,,::: (/) :::)@(::: )@( :::(/)::: _,, ::|_|_|:::
: |@| ::"- \~:: |@| :::|@|::: |@| :::|@|::: "- \~ :::|@|::::
: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::::
: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::()::: () ::::()::: () ::::()::: () ::::()::: () :
:::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( :
::::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: () ::::()::: () ::::()::: () ::::()::: () ::::()::::
: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::::
: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: www :::_+_::: ::::::::: :
:::|_|_|:: _,, :::(/)::: ) ( :::) (::: (/) :::_,,::: |_|_| :
::::| |::: "- \~ :::| |::: | | :::| |::: | | ::"- \~:: | | :
::::| |::: | | :::| |::: | | :::| |::: | | :::| |::: | | :
:::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ :
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2. Moviéndose
Las columnas están etiquetadas AH de izquierda a derecha y de 1 a 8 de abajo hacia arriba. El usuario podrá ingresar un movimiento de la siguiente forma:
<start column><start row><space><destination column><destination row>
Por ejemplo, B1 C3
significa mover al caballero a la casilla frente al peón del alfil (suponiendo que el juego acaba de comenzar).
Alternativamente, se puede utilizar el sistema ICCF, en el que las columnas están etiquetadas de 1 a 8 en lugar de A a H. Entonces, el movimiento de caballero mencionado anteriormente se convierte 21 33
.
La siguiente imagen ( fuente ) aclara ambos sistemas:
El movimiento se ejecutará y se mostrará el nuevo tablero. Cualquier captura resultante ocurrirá con el ajedrecista en movimiento retirando al ajedrecista en la casilla de destino del tablero.
No hay necesidad de verificar un movimiento de ajedrez legal, ya que se ha cubierto en otros desafíos: el programa de ajedrez más pequeño y el árbitro de ajedrez más pequeño Si el usuario intenta moverse desde un cuadrado vacío, su programa o función debe ignorar el movimiento. Si el usuario intenta capturar una pieza amiga, puede ignorar el movimiento o permitir que se capture la pieza estacionaria.
No hay necesidad de soportar en passant o castling.
Puede suponer que la entrada estará bien formada, es decir, siempre en el formato descrito anteriormente. Las letras siempre estarán en el mismo caso, usted puede decidir qué caso es ese.
3. Puntuación y bonificaciones
Este es el código de golf. El código más corto gana.
-10% de bonificación si su programa o función permite la promoción. El usuario ingresa una tercera entrada, esta vez una de las siguientes letras: QBR N. Esto solo debe permitirse si el movimiento termina con un peón en la última fila. El peón se cambia por la pieza nombrada. QBRN.
-10% de bonificación si su programa o función implementa un movimiento especial de "deshacer" para revertir los movimientos (hasta el comienzo del juego si es necesario). Obviamente, es posible que los jugadores aficionados realicen movimientos ilegales, y pueden desear para deshacerlos. Puede definir la entrada que el usuario debe dar para este movimiento de "deshacer" (siempre debe ser el mismo). El comportamiento no está definido si el usuario intenta deshacer más allá del comienzo del juego.
Suma de bonificaciones, es decir, si opta por ambas bonificaciones obtendrá -20%.
fuente
Respuestas:
Octava,
776688 bytes688:
{'foo','bar'}{i}
en lugar de un poco más larga['foo';'bar'](i,:)
Todavía ninguno de los bonos implementados.
Utiliza el sistema ICCF.
Puede que no haya espacios iniciales en la descripción del movimiento y el campo de origen y destino deben estar separados por un espacio en blanco, por lo que
42 44
es correcto, mientras que42 44
y42 44
no lo están.Versión un tanto sin golf:
fuente
Rubí,
715696693683 bytesEsta es una solución bastante desordenada, pero no tengo la paciencia para limpiarla más en este momento.
Ninguno de los bonos hechos.
Utiliza el sistema ICCF.
fuente
Python,
1136890753 bytesDisculpas por la respuesta parcial, pero soy un novato y realmente disfruté este desafío. Sé que probablemente sea realmente detallado, pero aquí está mi borrador:
fuente
=
, y si unfor
o unif
solo tiene una línea dentro, todo puede ir en la misma línea. Eche un vistazo a Consejos para jugar golf en Python .