To wyzwanie jest inspirowane tą aplikacją .
To znacznie łatwiejsza wersja tego wyzwania . To wyzwanie polega na kodowaniu , podczas gdy drugie to najszybsze .
Otrzymasz kwadratową siatkę wejściową o wymiarach 6 na 6, która jest podzielona na 6 obszarów, w których komórki każdego obszaru mają unikalny identyfikator ( w tekście użyję małych liter zf , ale możesz wybrać, co chcesz, na przykład liczby całkowite 1-6 ).
Dane wejściowe mogą wyglądać następująco (opcjonalny format wejściowy):
aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff
Lub łatwiejsze do wizualizacji:
Wyzwanie:
Musisz umieścić 6 drzew w tym parku, zgodnie z następującymi zasadami:
- Będzie dokładnie 1 drzewo na kolumnę i 1 drzewo na rząd
- Wszystkie obszary powinny mieć dokładnie 1 drzewo.
- Żadne drzewa nie mogą przylegać do innego drzewa, pionowo, poziomo ani po przekątnej
Rozwiązaniem powyższego układu jest:
Uwaga: dla każdej układanki jest tylko jedno rozwiązanie
Dodatkowe zasady:
- Formaty wejściowe i wyjściowe są opcjonalne
- Wyjściem może być na przykład lista indeksów, siatka z 1/0 wskazującą, czy w tej pozycji znajduje się drzewo, lub zmodyfikowana wersja danych wejściowych, w których drzewa są wskazane
- Czas wykonania musi być deterministyczny
- Program musi zakończyć się w ciągu 1 minuty na rozsądnym nowoczesnym laptopie
- Punkty Brownie, jeśli nie użyjecie siły!
Przypadki testowe:
aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff
---
aAbbbb
aabbbB
aaCcbb
acccDb
Ecccdb
eeeFff
----------
aabccc
aacccc
aaddce
aeeeee
aeeefe
eeeeee
---
aaBccc
aacccC
aadDce
Aeeeee
aeeeFe
eEeeee
----------
aaaabb
aacbbb
aadddb
addeef
ddddee
dddeee
---
aaaaBb
aaCbbb
Aadddb
addeeF
dDddee
dddEee
----------
abbbcd
abebcd
addddd
dddddd
effdff
eeffff
---
abBbcd
abebCd
Addddd
dddDdd
effdfF
eEffff
Te same przypadki testowe w formacie, który jest nieco łatwiejszy do analizy:
Test case 1:
[1,1,2,2,2,2;1,1,2,2,2,2;1,1,3,3,2,2;1,3,3,3,4,2;5,3,3,3,4,2;5,5,5,6,6,6]
Test case 2:
[1,1,2,3,3,3;1,1,3,3,3,3;1,1,4,4,3,5;1,5,5,5,5,5;1,5,5,5,6,5;5,5,5,5,5,5]
Test case 3:
[1,1,1,1,2,2;1,1,3,2,2,2;1,1,4,4,4,2;1,4,4,5,5,6;4,4,4,4,5,5;4,4,4,5,5,5]
Test case 4:
[1,2,2,2,3,4;1,2,5,2,3,4;1,4,4,4,4,4;4,4,4,4,4,4;5,6,6,4,6,6;5,5,6,6,6,6]
Odpowiedzi:
C,
223182 bajtówPobiera dane wejściowe jako argument w formacie podanym w pytaniu. Zapisuje wyjście na standardowe wyjście jako siatkę zer z jedynkami tam, gdzie idą drzewa.
Przykładowe dane wyjściowe:
Awaria
Jest to dostosowanie mojej odpowiedzi do najszybszej wersji kodu tego pytania . Nie ma tak dużego zwarcia, ale jest wystarczająco szybki dla sieci 6x6.
źródło
Clingo , 66 bajtów
Uruchom z
clingo plant.lp - -c n=<n>
gdzie<n>
jest rozmiar siatki. Format wejściowy jest listac(X,Y,Z).
instrukcji dla każdej komórki (X
,Y
) koloroweZ
, z ≤ 1X
,Y
,Z
≤n
, oddzielone spacją opcjonalnym. Dane wyjściowe obejmująt(X,Y)
dla każdego drzewa w (X
,Y
).Próbny
Aby ułatwić obsługę formatu wejścia / wyjścia, oto programy w języku Python do konwersji zi do formatu podanego w wyzwaniu.
Wejście
Wynik
źródło