Le but de ce défi est de déterminer si un mouvement est un mouvement légal des Dames anglaises .
Ce défi utilisera une carte 8x8. Une pièce déplacée doit être traitée comme un homme (pas un roi) qui ne peut avancer qu'en diagonale. Le plateau aura 0 ou plusieurs pièces noires et 1 ou plusieurs pièces blanches. Une pièce blanche sera actuellement en mouvement. La pièce blanche peut "sauter" par-dessus une pièce noire en diagonale devant elle si le carré directement derrière elle est vide. Il est possible de faire un autre saut à partir de cette position s'il y a une autre pièce noire en diagonale devant elle. La capture est obligatoire, il est donc illégal de ne pas effectuer de saut disponible. Cependant, il n'est pas obligatoire de prendre un chemin qui maximise le nombre de sauts. Fondamentalement, cela signifie que si vous faites un saut et qu'il y a un autre saut possible depuis la position de fin, ce mouvement est illégal. Les positions des pièces utilisent le schéma de numérotation suivant:
Règles
Contributions:
Une liste de nombres qui représentent des pièces noires.
Une liste de nombres qui représentent des pièces blanches.
Une position de départ pour la pièce blanche
La position finale de la pièce blanche
Production:
- Une valeur véridique si le mouvement est valide, sinon une valeur de falsey
Vous pouvez supposer qu'une pièce blanche occupera toujours la position de départ.
Si cela vous convient, vous pouvez supposer que la première pièce blanche de la liste des pièces blanches contiendra la position de départ au lieu d'accepter l'entrée 3.
Règles de golf à code standard. Le moins d'octets gagne.
Cas de test
Pour illustrer, O est la position de départ, X est la position de fin, B sont des pièces noires et W sont des pièces blanches
Black pieces: []
White pieces: [5]
Move: (5, 1)
Output: True
Single move no jump
X _ _ _
O _ _ _
B: [6]
W: [9]
M: (9, 2)
O: True
Single jump
_ X _ _
_ B _ _
O _ _ _
B: [2, 6]
M: (9, 2)
O: False
Illegal ending position on top of black piece
_ X _ _
_ B _ _
O _ _ _
B: [7, 14]
W: [17]
M: (17, 3)
O: True
Double jump
_ _ X _
_ _ B _
_ _ _ _
_ B _ _
O _ _ _
B: [7, 14]
M: (17, 10)
O: False
Illegal jump, must take the next jump as well
_ _ _ _
_ _ B _
_ X _ _
_ B _ _
O _ _ _
B: [4]
W: [8]
M: (8, 3)
O: False
Illegal jump across the board
_ _ _ X
B _ _ _
O _ _ _
B: [6, 7]
W: [6]
M: (10, 1)
O: True
Split decision p1
X _ _ _
_ B B _
_ O _ _
B: [6, 7]
M: (10, 3)
O: True
Split decision p2
_ _ X _
_ B B _
_ O _ _
B: [2]
W: [1]
M: (1, 3)
O: False
Sideways Jump
O B X _
B: [6]
W: [1]
M: (1, 10)
O: False
Backwards Jump
O _ _ _
_ B _ _
_ X _ _
B: [6]
W: [9, 2]
M: (9, 2)
O: False
Illegal ending position on top of white piece
_ X _ _
_ B _ _
O _ _ _
B: []
W: [9, 6]
M: (9, 2)
O: False
Illegal jump over white piece
_ X _ _
_ W _ _
O _ _ _
B: [8, 15, 23, 24]
W: [27]
M: (27, 4)
O: True
Split decision long path
_ _ _ X
_ _ _ B
_ _ _ _
_ _ B _
_ _ _ _
_ _ B B
_ _ W _
B: [8, 15, 23, 24]
W: [27]
M: (27, 20)
O: True
Split decision short path
_ _ _ _
_ _ _ B
_ _ _ _
_ _ B _
_ _ _ X
_ _ B B
_ _ W _
la source
B=[8,15,23,24];W=[27]
avec chacun des 1.M=[27,4]
etM=[27,20]
cela donnera un changement de direction. 2 il répondra à une question que j'ai: sont-ils tous les deux valides ou faut-il prendre plus de temps? ("La capture est obligatoire, donc il est illégal de ne pas faire un saut qui est disponible" suggère que les deux sont valides, bien que je ne sache pas pourquoi vous rendez illégal de ne pas capturer si possible, alors peut-être voulez-vous prendre autant de pièces que possible?)Réponses:
C'était difficile :) * correction de bugs (octets ajoutés)
JavaScript (Node.js) ,
197193191 191185181186 octetsEssayez-le en ligne!
la source
>>2&1
place de/4%2|0
.[10, 3], [14], 14, 7
échoué.