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
źródło
Odpowiedzi:
JavaScript (ES6),
184 ... 171163 bajtów(x)(y)
Wypróbuj online!
metoda
Każde triomino jest jednym z:
Początkowa konfiguracja macierzy jest następująca:
Przeplatamy pierwsze 2 kolory tak jak na każdej szachownicy, co daje:
Kolejne kroki to:
W takim przypadku ostatnia matryca to:
Skomentował
Wyjście graficzne
Kliknij na zdjęcie, aby ustawić pozycję otworu.
Pokaż fragment kodu
źródło
Węgiel drzewny , 78 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjścia za pomocą
#$%
znaków. Wyjaśnienie:Wprowadź współrzędne pustego kwadratu.
Wyprowadza skompresowany ciąg. Zawiera znaki nowej linii, aby uniknąć przerywania przepływu tego objaśnienia, łańcuch znajdziesz na końcu odpowiedzi.
Jeśli którakolwiek ze współrzędnych jest większa niż
3
wtedy, pamiętaj o tym fakcie i odejmij współrzędną od 7.Przeskocz do najbliższego
%
lewego górnego kwadratu%
s i zastąp go odpowiednim#
lub$
. (Ale to zostanie zastąpione spacją, jeśli było już w tym kwadracie).Wyczyść kwadrat przy zmniejszonych współrzędnych, a następnie odpowiednio odzwierciedl dane wyjściowe, aby ustawić puste miejsce w pierwotnej pozycji.
Próbowałem zacząć od kwadratu
%
s pośrodku i wypracowałem drogę do pożądanych współrzędnych, ale zajęło to 90 bajtów.źródło