Wygrywa najkrótszy kod, który przejdzie wszystkie możliwości
Powstało wiele gier opartych na siatce, które zaczynają się od włączonej siatki świateł. Naciśnięcie któregokolwiek ze świateł powoduje przełączenie tego światła i czterech sąsiadujących z nim świateł. Kiedy światło jest przełączane, jest ono wyłączane lub włączane, w zależności od tego, czy zostało celowo włączone, czy wyłączone. Celem jest uderzenie w światła w sekwencji, w wyniku której wszystkie światła zostaną wyłączone na końcu.
„X” oznacza włączone światła. „O” oznacza wyłączone światła. „P” oznacza naciskany kwadrat.
XOO XOO XOX XOX XXX
XOX XOP -> XXO -> OPO -> XOX
OOX OOX POO XXO XOO
Intial Grid Press 1 Press 2 Press 3 Ending Grid
Dane wejściowe można pobierać bezpośrednio z pliku przekazanego jako argument lub jako dane standardowe. Pierwszy wiersz danych wejściowych będzie zawierał x (1 <= x <= 20), wielkość siatki świateł, oznaczającą x na x . Drugi wiersz będzie zawierał y (0 <= y <= ( x * 3) 2 ), liczba początkowo zapalonych świateł. Następne y wierszy zawierają współrzędne zapalonych świateł na siatce, w formacie „kolumny wiersza”. Światła, które są już włączone (wcześniej były wyłączone), należy ponownie wyłączyć. Następny wiersz będzie zawierał z , liczbę wciśniętych świateł. Ostateczne z linie zawierają współrzędne wciśniętych świateł w kolejności, w jakiej zostały wciśnięte, w formacie „kolumny wiersza”.
Żadne dane wejściowe nie będą niepoprawne. Wszystkie liczby mieszczą się w podanych granicach siatki.
Wyjście będzie ostatnią siatką po przełączeniu wszystkich świateł. Powinno to być n na n siatka . Dla każdego obszaru, który ma włączone światło, należy użyć wielkiej litery „X”. Dla każdego obszaru z wyłączonym światłem należy użyć wielkiej litery „O”.
Światła, których to dotyczy, są wyłączone z siatki, należy je zignorować. Przełączanie światła na krawędzi siatki powinno wpływać tylko na światła znajdujące się na samej siatce.
Przypadki testowe
Wejście
4
5
2 3
2 4
3 1
3 4
4 3
7
3 3
4 4
3 4
4 2
4 1
2 2
3 2
Wynik
OXOO
XOXO
XOXO
OXOO
Wejście
1
3
1 1
1 1
1 1
2
1 1
1 1
Wynik
X
źródło
exec
jest słowem kluczowym, a nie wbudowaną funkcją (w Pythonie 2.x), więc nie ma potrzeby stosowania tych dodatkowych nawiasów.Ruby 1.9, 167 znaków
Edycje:
z[u]*=-1
zamiastz[u]=-z[u]
, usuń nieużywaną zmiennąźródło
Perl, 139 znaków
Wyjaśnienie:
źródło
APL (71)
źródło