Gra BattleBlock Theatre czasami zawiera układankę, która jest uogólnioną wersją Lights Out . Masz trzy sąsiadujące bloki, z których każdy wskazuje poziom od 1 do 4 włącznie z paskami, np .:
|
||||
||
Jeśli dotkniesz bloku, to ten blok, podobnie jak każdy sąsiedni blok, zwiększy jego poziom (zawijając z 4 do 1). Układanka jest rozwiązana, gdy wszystkie trzy bloki pokazują ten sam poziom (nie ma znaczenia, który poziom). Ponieważ kolejność dotykania bloków nie ma znaczenia, oznaczamy rozwiązanie według częstotliwości dotykania każdego bloku. Optymalnym rozwiązaniem dla powyższych danych wejściowych byłoby 201
:
| --> || --> ||| |||
|||| | || |||
|| || || --> |||
Gra bardzo łatwo generalizuje dowolną liczbę bloków, chociaż w przypadku niektórych liczb nie wszystkie konfiguracje są rozwiązywalne.
Wyzwanie
Biorąc pod uwagę sekwencję poziomów bloków, zwróć, jak często każdy blok musi być dotykany, aby rozwiązać zagadkę. Np. Powyższy przykład zostałby podany jako 142
i mógłby dać 201
wynik. Jeśli nie ma rozwiązania, zwróć wybrane, spójne wyjście, które można odróżnić od wszystkich potencjalnych rozwiązań, np. -1
Pusty ciąg.
Możesz napisać funkcję lub program, wziąć dane wejściowe przez STDIN, argument wiersza poleceń lub argument funkcji, w dowolnym dogodnym formacie listy lub ciągu znaków, i podobnie wyprowadzić dane poprzez wartość zwracaną lub drukując do STDOUT.
Twój kod powinien zwrócić poprawne wyniki dla wszystkich przypadków testowych w ciągu minuty na rozsądnej maszynie. (Nie jest to całkowicie ścisły limit, więc jeśli twoje rozwiązanie zajmie minutę i dziesięć sekund, to dobrze, ale jeśli zajmie to 3 minuty, nie będzie. Dobry algorytm łatwo je rozwiąże w kilka sekund.)
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach).
Przykłady
Rozwiązania nie są unikalne, więc możesz uzyskać różne wyniki.
Input Output
1 0
11 00
12 No solution
142 201
434 101
222 000
4113 0230
32444 No solution
23432 10301
421232 212301
3442223221221422412334 0330130000130202221111
22231244334432131322442 No solution
111111111111111111111222 000000000000000000000030
111111111111111111111234 100100100100100100100133
412224131444114441432434 113013201011001101012133
O ile mi wiadomo, istnieją dokładnie 4 rozwiązania dla każdego wejścia, w których liczba bloków wynosi 0 mod 3 lub 1 mod 3, a istnieją 0 lub 16 rozwiązań, w których jest to 2 mod 3.