Zadanie:
Rozważ problem: „biorąc pod uwagę szachownicę z brakiem jednego kwadratu, pokrój ją w 21 L-triomino”. Istnieje dobrze znany konstruktywny dowód na to, że można to zrobić dla dowolnej kwadratowej wielkości szachownicy o sile dwóch. Działa poprzez podzielenie szachownicy na mniejszą szachownicę z otworem i jednym dużym triomino, a następnie zaobserwowanie, że to triomino można rekurencyjnie pokroić na cztery triomino.
W tym zadaniu musisz wyciąć szachownicę 8x8 w triomino w kształcie litery L, a następnie pokolorować je czterema kolorami, tak aby żadne dwa sąsiednie triomino nie miały tego samego koloru.
Specyfikacja:
Twoje dane wejściowe to pozycja dołka podana jako para liczb całkowitych. Możesz wybrać, który jest indeksem kolumny, a który indeksem wiersza. Możesz wybrać, czy każdy zaczyna się od 0, czy od 1 i dalej, od którego rogu zwiększa się. Możesz wymagać A..H jako pierwszej współrzędnej zamiast 0..7 lub 1..8. Możesz także zaakceptować obie współrzędne spakowane w jedną liczbę całkowitą 0..63 lub 1..64 w porządku leksykograficznym (major-row lub major-column, od lewej do prawej lub od prawej do lewej, od góry do dołu lub od dołu do góry). Możesz napisać pełny program lub funkcję.
Możesz wyprowadzać kafelki jako ASCII, jako kolorowe ASCII lub jako prymitywy graficzne. Jeśli wybierzesz wyjście ASCII, możesz wybrać dowolne cztery drukowane znaki ASCII, które reprezentują cztery kolory. Jeśli wybierzesz kolorowe ASCII, możesz wybrać dowolne cztery drukowane znaki ASCII lub tylko jeden znak inny niż spacja. Otwór musi być reprezentowany przez znak spacji. Jeśli jedna z twoich postaci jest postacią spacji, żadne triomino sąsiadujące z dziurą lub na krawędzi szachownicy nie może być w tym kolorze.
Jeśli wybierzesz kolorowe ASCII lub wyjście graficzne, możesz wybrać dowolne cztery kolory spośród # 000, # 00F, # 0F0, # 0FF, # F00, # F0F, # FF0, #FFF lub ich najbliższych odpowiedników dostępnych w twoim środowisku. W przypadku wybrania wyjścia graficznego prymitywy graficzne muszą być wypełnione kwadratami o wielkości co najmniej 32 x 32 piksele i oddzielone nie więcej niż dwoma pikselami innego koloru. Jeśli powyższe wartości przekraczają rozdzielczość ekranu środowiska, minimalny rozmiar jest zmniejszany do największego rozmiaru kwadratu, który nadal mieści się na ekranie.
Możesz wybrać dowolny prawidłowy kafelek danej szachownicy. Możesz wybrać dowolne cztery kolory wybranego kafelka. Twój wybór czterech kolorów musi być taki sam na wszystkich wydrukach, ale nie musisz używać każdego koloru na każdym wydruku.
Przykłady:
Możliwe dane wyjściowe = [0, 0] (lewy górny róg)
#??##??
##.?#..?
?..#??.#
??##.?##
##?..#??
#.??##.?
?..#?..#
??##??##
Kolejne możliwe wyjście tego samego programu (input = [0, 7]):
??#??#?
?##?##??
..xx..xx
.?x#.?x#
??##??##
..xx..xx
.?x#.?x#
??##??##
Inny program może również produkować, dla wprowadzenia „D1” (zwróć uwagę na niestandardową, ale dozwoloną orientację szachownicy),
AABBCCAA
ACBACBAC
CCAABBCC
ABBAADD
AABDABDC
BBDDBBCC
BABBACAA
AABAACCA