Po przebudzeniu w ciemnym pokoju zobaczysz prostokątną siatkę świateł z odpowiednimi włącznikami. Decydujesz się użyć układu współrzędnych z lewym dolnym światłem reprezentującym (1,1), a współrzędne rosną wraz z ruchem w górę (kierunek y) i w prawo (kierunek x). Siatki są identyczne pod tym względem, że przestawienie przełącznika w pozycji (a, b) przełącza (zmienia się z wyłączenia na włączenie lub z włączenia do wyłączenia) światło w (a, b), a także światła w tej samej kolumnie lub w tym samym rzędzie co ( a, b).
Twój wkład będzie prostokątną siatką dwóch różnych znaków reprezentujących włączanie i wyłączanie (używam odpowiednio 1 i 0). Ponadto część danych wejściowych będzie serią co najmniej jednej pary współrzędnych (o dowolnym formacie i pożądanym rozdzieleniu), która będzie reprezentować przełączniki, które przerzucisz.
Dane wyjściowe będą miały tę samą siatkę, z „odwróceniem” zastosowanym do każdej pary współrzędnych podanej jako dane wejściowe. Możesz wybrać sposób sformatowania danych wejściowych, ale dane wyjściowe muszą być siatką, a nie tablicą.
Próbki
Przykładowe dane wejściowe 1
111111
111111
111111
111111
(3,2)
Próbka wyjściowa 1
110111
110111
000000
110111
Przykładowe wejście 2
01101
10100
00010
11111
10110
(1,1), (5,5)
Próbka wyjściowa 2
00010
00101
10011
01110
01000
Przykładowe dane wejściowe 3
1
(1,1)
Próbka wyjściowa 3
0
Przykładowe wejście 4
00000
11111
00000
11111
(2,3), (2,3)
Próbka wyjściowa 4
00000
11111
00000
11111
To jest kod golfowy. Obowiązują standardowe zasady. Najkrótszy kod w bajtach wygrywa.
<grid><RETURN><coordinate_x><RETURN><coordinate_y><RETURN>
?Odpowiedzi:
CJam,
3736 bajtówDane wejściowe powinny mieć najpierw siatkę, używając dowolnych dwóch znaków innych niż NULL, które różnią się tylko ostatnim bitem (więc
0
i1
działają), a następnie listy par współrzędnych w stylu CJam.Sprawdź to tutaj.
źródło
Dyalog APL, 20 bajtów
Jest to funkcja dynamiczna, która pobiera początkową siatkę po prawej stronie i listę współrzędnych po lewej.
Aby wprowadzić pojedynczą parę współrzędnych, użyj np.
(⊂2 3)
Jako lewego argumentu.Wypróbuj tutaj .
źródło
MATL , 39 bajtów
Dane wejściowe mają następującą postać (przykład odpowiada przykładowej wartości wejściowej 2 w wyzwaniu):
Pierwszym wejściem jest macierz definiująca siatkę
0
i1
.;
jest separatorem wierszy. Drugim wejściem jest macierz par współrzędnych, gdzie każda kolumna jest parą.Przykład
Wyjaśnienie
źródło
Ruby 114 bajtów
Pobiera jako dane wejściowe:
g
, tablica tablic reprezentujących siatkę początkową.o
, tablica punktów, przy czym każdy punkt jest tablicą z dwoma elementami, np[x, y]
.źródło