Écrivez le code le plus court qui calcule tous les mouvements (légaux) possibles du joueur actuel à partir d'une chaîne FEN donnée. Qu'est-ce que la chaîne FEN? (Wikipédia)
- Le code le plus court gagne, la langue n'a pas d'importance.
- Les mouvements de sortie doivent obéir aux règles de mouvement des échecs, sauf en passant , le roque et la promotion des pions.
- Ignorez échec, échec et échec, le roi ne peut pas non plus être capturé des situations.
Vous pouvez définir des sorties différemment que vous le souhaitez (par exemple: A2-A4
, A2A4
, a2a4
, a2->a4
...)
Cas de test:
# ENTRÉE 1: rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR w KQkq - 0 1
# SORTIE 1 A2-A4, A2-A3, B2-B4, B2-B3, C2-C4, C2-C3, D2-D4, D2-D3, E2-E4, E2-E3, F2-F4, F2-F3, G2-G4, G2-G3, H2-H4, H2-H3, B1-A3, B1-C3, G1-F3, G1-H3
# ENTRÉE 2 7k / 8/8/8/8/8 / PP6 / Q1q4K w - - 0 1
# SORTIE 2 A1-B1, A1-C1, A2-A3, A2-A4, B2-B3, B2-B4, H1-H2, H1-G1, H1-G2
Réponses:
C - 391 octets
Prend l'entrée comme arguments de ligne de commande et imprime sur stdout avec les carrés étiquetés de 0 à 63.
OK, j'avais quelques minutes donc j'ai essayé de supprimer tous les bits relatifs à la détection de chèque. Je pense que ce n'est pas très efficace maintenant ...
Version de détection de vérification de 478 octets
la source
also here is how test case input boards look like
). Compte tenu de la position dans l'image, la sortie du scénario de test d'origine était correcte selon les règles.Java 1455
la source
Python 553
649678Le retrait à deux espaces est tab tab, qui économise 5 octets.
Il me semble que vous pouvez probablement lui faire évaluer les mouvements raisonnables vers un pli décent et le garder sous 1024 octets :) J'ai commencé à parcourir d'autres questions d' échecs , mais il ne semble pas y avoir de question sur le moteur d'échecs de codegolf ...
la source
B1C3
etH2H3
dans le premier exemple montré dans la question.H2H3
, je voulais direG1H3
- en d'autres termes, vos chevaliers blancs ne font que tourner à gauche.Python
638637 (482?) OctetsRemarque: après
def O(y):
qu'il y ait une nouvelle ligne et un caractère de tabulation avantif
Remarque: en utilisant le module zlib, il est possible d'obtenir un code source Python valide de 482 octets en compressant simplement la source réelle:
la source
JavaScript (E6) 481
492 550Edit Correction d'un bug désagréable lors du déplacement d'un chevalier. Beaucoup de travail pour garder le même octet.
(Sans compter les espaces de début et les nouvelles lignes conservées pour plus de lisibilité)
Moins de golf
Test dans la console FireFox / FireBug
Production
la source
JAVA
631599594Correction d'un bug dans la version 599 octets (merci Jack de l'avoir signalé!) Et raccourci le code à 594 octets.
Compiler:
javac F.java
exécuter:
java F 6pk/6pp/8/8/8/p7/PP4pp/Q2p2pK w - - 0 1
sortie:
B2B3 B2B4 B2A3 A1B1 A1C1 A1D1 H1H2 H1G1 H1G2
la source
3Q4/p4r1k/P4pp1/4P3/5n2/3P4/4BbbP/RN3KN1 w - - 0 0
je ne vois pas de mouvementsF1F2
ouF1G2
le roi est-il capable de capturer?