Dans ce défi, vous devez dessiner l'échiquier ci-dessous et autoriser les mouvements.
1. Dessin
Chaque carré blanc a 5x9 espaces.
Chaque carré noir a 5 x 9 colons.
La planche est entourée d'une bordure de deux points.
Les pièces ont 5 caractères de large et se trouvent sur la rangée inférieure du carré au centre.
Les pions ont 4 caractères de large. Ils sont légèrement décalés du centre à droite, avec 3 carrés vides à gauche et 2 carrés vides à droite. Ils sont assis une ligne au-dessus du bas du carré.
Il ne doit pas y avoir d'espace en dehors de la zone du tableau, à l'exception d'une nouvelle ligne facultative.
Le tableau et les échecs doivent être tirés exactement comme indiqué, sauf que:
Vous pouvez remplacer le
:
dans les carrés noirs et la bordure par un symbole différent, et vous pouvez remplacer le@
dans les morceaux noirs par un symbole différent (mais pas le même que celui utilisé pour les carrés noirs).Vous pouvez déplacer les pions d'un caractère vers la gauche si vous le souhaitez.
.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: ::::::::: :::www::: _+_ ::::::::: ::::::::::
: |_|_| :: _,,::: (/) :::)@(::: )@( :::(/)::: _,, ::|_|_|:::
: |@| ::"- \~:: |@| :::|@|::: |@| :::|@|::: "- \~ :::|@|::::
: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::::
: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::()::: () ::::()::: () ::::()::: () ::::()::: () :
:::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( :
::::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: () ::::()::: () ::::()::: () ::::()::: () ::::()::::
: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::::
: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: www :::_+_::: ::::::::: :
:::|_|_|:: _,, :::(/)::: ) ( :::) (::: (/) :::_,,::: |_|_| :
::::| |::: "- \~ :::| |::: | | :::| |::: | | ::"- \~:: | | :
::::| |::: | | :::| |::: | | :::| |::: | | :::| |::: | | :
:::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ :
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2. Déménagement
Les colonnes sont étiquetées AH de gauche à droite et 1 à 8 de bas en haut. L'utilisateur doit pouvoir saisir un mouvement sous la forme suivante:
<start column><start row><space><destination column><destination row>
Par exemple B1 C3
, déplacer le chevalier sur la place devant le pion de l'évêque (en supposant que le jeu vient de commencer).
Alternativement, le système ICCF peut être utilisé, dans lequel les colonnes sont étiquetées de 1 à 8 au lieu de A à H. Ainsi, le mouvement de chevalier mentionné ci-dessus devient 21 33
.
L'image suivante ( source ) clarifie les deux systèmes:
Le mouvement doit être exécuté et le nouveau tableau affiché. Toute capture résultante doit se produire lorsque le joueur d'échecs en mouvement retire le joueur d'échecs sur la case de destination du plateau.
Il n'est pas nécessaire de vérifier un mouvement d'échecs légal, car cela a été couvert dans d'autres défis: le plus petit programme d'échecs et le plus petit arbitre d'échecs Si l'utilisateur essaie de se déplacer d'une case vide, votre programme ou fonction doit ignorer le mouvement. Si l'utilisateur essaie de capturer une pièce amie, vous pouvez soit ignorer le mouvement, soit autoriser la capture de la pièce immobile.
Il n'est pas nécessaire de soutenir en passant ou en roque.
Vous pouvez supposer que l'entrée sera bien formée, c'est-à-dire toujours dans le format décrit ci-dessus. Les lettres seront toujours dans le même cas, vous pouvez décider de quel cas il s'agit.
3. Score et bonus
C'est le golf de code. Le code le plus court gagne.
-10% de bonus si votre programme ou fonction permet une promotion. L'utilisateur entre une troisième entrée, cette fois l'une des lettres suivantes: QBR N. Cela ne doit être autorisé que si le mouvement se termine par un pion sur la dernière ligne. Le pion est échangé contre la pièce nommée. QBRN.
-10% de bonus si votre programme ou fonction implémente un mouvement spécial "annuler" pour inverser les mouvements (dès le début du jeu si nécessaire.) Il est évidemment possible pour les joueurs amateurs de faire des mouvements illégaux, et ils peuvent souhaiter pour les défaire. Vous pouvez définir l'entrée que l'utilisateur doit donner pour ce mouvement "d'annulation" (il doit toujours être le même.) Le comportement n'est pas défini si l'utilisateur essaie d'annuler au-delà du début du jeu.
La somme des bonus, c'est-à-dire si vous optez pour les deux bonus, vous obtenez -20%.
la source
Réponses:
Octave,
776688 octets688:
{'foo','bar'}{i}
à la place de légèrement plus longue['foo';'bar'](i,:)
Toujours aucun bonus mis en œuvre.
Utilise le système ICCF.
Il ne peut pas y avoir d'espaces de tête dans la description du déplacement et les champs source et destination doivent être séparés par un seul espace blanc, donc
42 44
c'est correct, tandis que42 44
et42 44
ne le sont pas.Version quelque peu non golfée:
la source
Rubis,
715696693683 octetsC'est une solution assez compliquée mais je n'ai pas la patience de la nettoyer davantage pour le moment.
Aucun des bonus n'est fait.
Utilise le système ICCF.
la source
Python,
1136890753 octetsToutes mes excuses pour la réponse partielle, mais je suis un débutant et j'ai vraiment apprécié ce défi. Je sais que c'est probablement très verbeux, mais voici mon brouillon:
la source
=
, et si unfor
ou unif
n'a qu'une seule ligne à l'intérieur, tout peut aller sur la même ligne. Jetez un œil aux conseils pour jouer au golf en Python .