Celem tego wyzwania jest ustalenie, czy ruch jest legalnym ruchem warcabów angielskich .
W tym wyzwaniu zostanie użyta tablica 8x8. Przesunięty pionek należy traktować jak człowieka (a nie króla), który może poruszać się po przekątnej do przodu. Na planszy będzie 0 lub więcej czarnych i 1 lub więcej białych. Jeden biały element będzie się teraz poruszał. Biały element może „przeskoczyć” na jeden czarny element po przekątnej przed nim, jeśli kwadrat bezpośrednio za nim jest pusty. Możliwe jest wykonanie kolejnego skoku z tej pozycji, jeśli przed nim jest inny czarny element w dowolnym kierunku po przekątnej. Przechwytywanie jest obowiązkowe, więc nie wolno nie skakać z dostępnego skoku. Jednak nie jest obowiązkowe obieranie ścieżki, która maksymalizuje liczbę skoków. Zasadniczo oznacza to, że jeśli wykonasz skok i istnieje inny możliwy skok z pozycji końcowej, ruch ten jest nielegalny. Pozycje sztuk stosują następujący schemat numeracji:
Zasady
Wejścia:
Lista liczb reprezentujących czarne elementy.
Lista liczb reprezentujących białe elementy.
Pozycja początkowa dla białego kawałka
Pozycja końcowa dla białego kawałka
Wynik:
- Prawdziwa wartość, jeśli ruch jest prawidłowy, w przeciwnym razie wartość falsey
Możesz założyć, że biały kawałek zawsze będzie zajmował pozycję początkową.
Jeśli jest to wygodne, możesz założyć, że pierwszy biały kawałek na białej liście będzie zawierał pozycję początkową zamiast akceptować dane wejściowe 3.
Standardowe zasady gry w golfa. Wygrywa najmniej bajtów.
Przypadki testowe
Aby to zilustrować, O to pozycja początkowa, X to pozycja końcowa, B to czarne kawałki, a W to białe kawałki
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 _
źródło
B=[8,15,23,24];W=[27]
w każdym zM=[27,4]
iM=[27,20]
1. da to zmianę kierunku. 2 odpowie na pytanie, które mam: czy oba są ważne, czy też należy je kontynuować? („Przechwytywanie jest obowiązkowe, więc niedozwolone jest nie skakanie, które jest dostępne” sugeruje, że oba są ważne, chociaż nie wiem, dlaczego sprawiasz, że nielegalne nie jest przechwytywanie, jeśli to możliwe, więc może masz na myśli jak najwięcej kawałków?)Odpowiedzi:
To było trudne :) * naprawione błędy (dodane bajty)
JavaScript (Node.js) ,
197193191185181186 bajtówWypróbuj online!
źródło
>>2&1
zamiast/4%2|0
.[10, 3], [14], 14, 7
failed.