Das Ziel dieser Herausforderung ist es festzustellen, ob ein Umzug ein legaler Zug von English Checkers ist .
Für diese Herausforderung wird ein 8x8-Board verwendet. Ein bewegtes Stück sollte als ein Mann (kein König) behandelt werden, der sich nur diagonal vorwärts bewegen kann. Das Brett hat 0 oder mehr schwarze Teile und 1 oder mehr weiße Teile. Ein weißes Stück wird sich derzeit bewegen. Das weiße Stück kann diagonal davor über ein schwarzes Stück "springen", wenn das Quadrat direkt dahinter leer ist. Es ist möglich, einen weiteren Sprung von dieser Position aus zu machen, wenn sich diagonal davor ein weiteres schwarzes Stück in beide Richtungen befindet. Die Erfassung ist obligatorisch, daher ist es illegal, keinen verfügbaren Sprung zu machen. Es ist jedoch nicht zwingend erforderlich, einen Pfad zu wählen, der die Anzahl der Sprünge maximiert. Grundsätzlich bedeutet dies, dass diese Bewegung illegal ist, wenn Sie einen Sprung machen und es einen weiteren möglichen Sprung von der Endposition gibt. Stückpositionen verwenden das folgende Nummerierungsschema:
Regeln
Eingaben:
Eine Liste von Zahlen, die schwarze Teile darstellen.
Eine Liste von Zahlen, die weiße Teile darstellen.
Eine Ausgangsposition für das weiße Stück
Die Endposition für das weiße Stück
Ausgabe:
- Ein wahrer Wert, wenn der Zug gültig ist, andernfalls ein falscher Wert
Sie können davon ausgehen, dass ein weißes Stück immer die Ausgangsposition einnimmt.
Wenn es Ihnen passt, können Sie davon ausgehen, dass das erste weiße Teil in der Liste der weißen Teile die Startposition enthält, anstatt Eingabe 3 zu akzeptieren.
Standard Code Golf Regeln. Wenig Bytes gewinnen.
Testfälle
Zur Veranschaulichung ist O die Startposition, X die Endposition, B sind schwarze Teile und W sind weiße Teile
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 _
quelle
B=[8,15,23,24];W=[27]
bei jedem vonM=[27,4]
undM=[27,20]
1 vor. Er gibt eine Richtungsänderung. 2 Es wird eine Frage beantworten, die ich habe: Sind beide gültig oder müssen die längeren genommen werden? ("Die Erfassung ist obligatorisch, daher ist es illegal, keinen verfügbaren Sprung zu machen" schlägt vor, dass beide gültig sind, obwohl ich nicht weiß, warum Sie es illegal machen, wenn möglich nicht zu erfassen. Vielleicht möchten Sie also als nehmen viele Stücke wie möglich?)Antworten:
Das war eine Herausforderung :) * Fehler behoben (Bytes hinzugefügt)
JavaScript (Node.js) ,
197193191185181186 BytesProbieren Sie es online aus!
quelle
>>2&1
anstelle von verwenden/4%2|0
.[10, 3], [14], 14, 7
fehlgeschlagen.