tło
W grze Nim gracze naprzemiennie usuwają „kamienie” z „stosów”: w każdej turze gracz musi usunąć jeden lub wszystkie kamienie z jednego stosu. Celem Nim jest zabranie ostatniego kamienia lub, w wariancie misere, zmusić przeciwnika do zrobienia tego - jednak okazuje się, że strategie są prawie identyczne.
Nim to fajna gra w bar. Możesz użyć zapałek lub monet do „kamieni”, a „stosy” są zazwyczaj ułożone w jednej linii. Poniżej znajduje się klasyczny układ z stosami 1, 3, 5 i 7:
Jeśli nigdy wcześniej nie grałeś w Nima, możesz spróbować swoich sił przed tym wyzwaniem. Oto wersja o nazwie „Perły przed świnią” .
Strategia
Optymalna strategia w Nim jest na tyle trudna, że większość laików przegrywa konsekwentnie z ekspertem, ale jest łatwa do opisania za pomocą binarnej arytmetyki .
Wykonywanie mentalnych binarnych operacji XOR jest jednak trudne, więc na szczęście istnieje równoważny sposób wizualizacji prawidłowej strategii, który jest łatwiejszy do wdrożenia w czasie rzeczywistym, nawet gdy jest pijany.
Istnieją tylko trzy kroki:
- Mentalnie pogrupuj „kamienie” w każdej linii w podgrupy, których rozmiary to potęgi 2, zaczynając od największego możliwego rozmiaru: 8, 4, 2 i 1 są wystarczające dla większości gier.
- Spróbuj dopasować każdą grupę do bliźniaka w innej linii, aby każda grupa miała parę.
- Jeśli nie jest to możliwe, usuń niesparowane „kamienie” z jednej linii (zawsze będzie to możliwe - zobacz link do Wikipedii, dlaczego), aby krok 2. stał się możliwy.
Lub, powiedział inny sposób: „Usuń niektóre kamienie z jednego stosu, tak że jeśli zgrupujesz stosy w potęgi 2, wszystkie grupy mogą zostać sparowane z grupą na innym stosie”. Z zastrzeżeniem, że nie możesz rozbić większych mocy 2 na mniejsze - np. Nie możesz pogrupować linii z 8 kamieniami w dwie grupy po 4.
Na przykład oto jak wizualizujesz tablicę powyżej:
Ta plansza jest idealnie wyważona, więc najpierw chcesz, aby przeciwnik się poruszył.
Wyzwanie
Biorąc pod uwagę listę dodatnich liczb całkowitych reprezentujących rozmiar „stosów” Nima, zwróć wizualizację zwykłego tekstu na tablicy Nim, widzianą przez eksperta.
To, co stanowi prawidłową wizualizację, najlepiej wyjaśnić na przykładzie, ale musisz:
- Przypisz odrębny znak do każdej „podgrupy potęgi-2” i jej pary (niesparowane podgrupy nie kwalifikują się) i użyj tego znaku do przedstawienia „kamieni” zarówno podgrupy, jak i pary.
- Reprezentują żadnych niesparowanych „kamienie” (czyli te, ekspert usunęłaby podczas odtwarzania normalny - nie misere - NIM) za pomocą łącznika:
-.
Istnieje wiele sposobów na uzyskanie prawidłowej wizualizacji i wszystkie są ważne. Przeanalizujmy niektóre przypadki testowe:
Przypadki testowe
Wejście: 1, 3, 5, 7
Możliwe wyjście 1:
A
BBA
CCCCD
CCCCBBD
Opcjonalnie możesz dołączyć spacje między znakami, a także puste linie między wierszami:
Możliwe wyjście 2:
A
B B A
C C C C D
C C C C B B D
Wejście: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Kolejność i wybór postaci może być dowolna:
Możliwe wyjście 1:
G
E E
E E G
C C C C
C C C C F
B B B B D D
B B B B D D F
H H I - - - - -
A A A A A A A A I
A A A A A A A A H H
Symbole Unicode też są w porządku:
Możliwe wyjście 2:
◎
◈ ◈
◈ ◈ ◎
△ △ △ △
△ △ △ △ ◉
◐ ◐ ◐ ◐ ◀ ◀
◐ ◐ ◐ ◐ ◀ ◀ ◉
▽ ▽ ◒ - - - - -
▥ ▥ ▥ ▥ ▥ ▥ ▥ ▥ ◒
▥ ▥ ▥ ▥ ▥ ▥ ▥ ▥ ▽ ▽
Wejście: 7
Z zasad wynika, że każdy „pojedynczy stos” musi zostać całkowicie usunięty.
Możliwe wyjście 1:
-------
Możliwe wyjście 2:
- - - - - - -
Wejście: 5, 5
Możliwe wyjście:
A A A A B
A A A A B
Dodatkowe zasady
- To jest golf golfowy ze standardowymi zasadami. Najkrótszy kod wygrywa.
- Dane wejściowe są elastyczne i można je przyjmować w dowolnej dogodnej dla ciebie formie listy.
- Dane wyjściowe są również elastyczne, co ilustrują powyższe przykłady. Dopuszczalne będą najbardziej rozsądne zmiany. Zapytaj, czy czegoś nie wiesz.
["H","EE","EEH","CCCC","CCCCI","DDDDFF","DDDDFFI","AAAAAAAA","AAAAAAAA-","----------"]
AAAABBBBjest właściwie nieważny i ABBnie jest - ale sprawia, że dane wyjściowe są mniej czytelne, więc myślę, że zmniejszanie w linii jest wyraźną regułą.

