Udowodniono, że następujące 13 kwadratowych kafelków Wanga zawsze układa aperiodycznie płytkę . Oznacza to, że gdy kwadraty są ułożone w siatkę ze wszystkimi sąsiadującymi bokami tego samego koloru, tłumaczenie wzoru nigdy nie będzie pasować do siebie.
Każdą płytkę będziemy reprezentować tekstowo siatką 3 × 3 wypełnioną spacjami w środku i rogach, a liczby od 1 do 5 zamiast kolorów czerwonego, zielonego, niebieskiego, żółtego, szarego, na krawędziach:
2 2 2 1 1 1 4 3 2 2 4 3 2
1 2 1 3 2 3 2 1 3 1 3 2 4 4 4 4 4 5 4 5 5 5 5 5 5 4
3 2 3 2 3 2 1 2 1 4 1 2 2
Cel
Twoim zadaniem jest napisanie programu, który przyjmie szerokość i wysokość i wyświetli prawidłową siatkę płytek Wanga o tych wymiarach. Prawidłowe płytki to takie, w których wszystkie sąsiadujące krawędzie płytek mają ten sam kolor (lub numer). Najmniejszy program w bajtach wygrywa.
Dane wejściowe powinny pochodzić z argumentów stdin lub wiersza poleceń, a dane wyjściowe powinny przejść do stdout. Dokładny format wejściowy może być dowolny, w miarę oczywisty, jak >>> wangtiler 3 2
. Szerokość i wysokość są zawsze dodatnimi liczbami całkowitymi.
Przykład (szerokość = 3, wysokość = 2)
Zauważ, że kiedy układamy kafelki tekstowe, sąsiednie krawędzie tworzą niezbędne zbędne pary cyfr:
1 2 1
2 11 22 1
2 3 2
2 3 2
4 55 55 4
1 2 2
(To NIE jest właściwy format wyjściowy.)
Możemy skompresować je poziomo i pionowo, aby uzyskać:
1 2 1
2 1 2 1
2 3 2
4 5 5 4
1 2 2
Ten skompresowany format jest właściwym formatem wyjściowym, którego musisz użyć. Linie nieparzyste muszą zawierać spację końcową.
Premia graficzna
Zamiast wyświetlać tekst, program może wyświetlać obraz siatki sąsiadująco. Płytki graficzne muszą składać się z czterech trójkątów 45-45-90 ułożonych w kwadrat i używać pięciu łatwo rozpoznawalnych kolorów, takich jak płytki powyżej. Czarne obramowania nie są wymagane. Płytki graficzne muszą mieć rozmiar co najmniej 32 x 32 piksele. Nie stosuje się do nich „kompresji”.
Przykładowy obraz bonusowy: (ta sama siatka jak w powyższym przykładzie)
Bonus jest wart minus 150 bajtów.
Notatki
- Musisz użyć tego zestawu 13 płytek.
- Płytek nie można obracać.
- Kafelki mogą pojawiać się dowolną liczbę razy (w tym żadną).
- Możesz założyć, że prawidłowe kafelki o dowolnych wymiarach są możliwe.