Wyobraź sobie siatkę kwadratów W na H, która owija się toroidalnie. Elementy są umieszczane na siatce w następujący sposób.
Pierwszy przedmiot można umieścić na dowolnym polu, ale kolejne przedmioty nie mogą znajdować się w odległości R Manhattanu od jakiegokolwiek poprzedniego przedmiotu (znanego również jako sąsiedztwo Von Neumanna w zakresie R ). Staranne wybranie pozycji pozwala na umieszczenie dużej liczby elementów na siatce, zanim nie będzie już żadnych prawidłowych pozycji. Zamiast tego rozważ przeciwny cel: jaka jest najniższa liczba przedmiotów, które można umieścić i nie pozostawiają żadnych dalszych ważnych pozycji?
Oto strefa wykluczenia w promieniu 5:
Oto kolejna strefa wykluczenia w promieniu 5, tym razem w pobliżu krawędzi, więc zachowanie zawijania jest widoczne:
Wejście
Trzy liczby całkowite:
- W : szerokość siatki (dodatnia liczba całkowita)
- H : wysokość siatki (dodatnia liczba całkowita)
- R : promień strefy wykluczenia (nieujemna liczba całkowita)
Wynik
Liczba całkowita N , która jest najmniejszą liczbą elementów, które można umieścić, uniemożliwiając dalsze prawidłowe umieszczenie.
Detale
- Promień zera daje strefę wykluczenia 1 kwadrat (ten, na którym został umieszczony przedmiot).
- Promień N wyklucza strefę, do której można dotrzeć w N stopni ortogonalnych (pamiętaj, że krawędzie zawijają się toroidalnie).
Twój kod musi działać w trywialnym przypadku R = 0, ale nie musi działać dla W = 0 lub H = 0.
Twój kod musi radzić sobie z przypadkiem, gdy R > W lub R > H .
Termin i przypadki testowe
Kod musi obsługiwać wszystkie przypadki testowe, a każdy przypadek testowy musi zostać ukończony w ciągu 5 minut. To powinno być łatwe (przykładowe rozwiązanie JavaScript zajmuje kilka sekund dla każdego przypadku testowego). Limit czasu ma głównie na celu wykluczenie podejścia o ekstremalnej brutalnej sile. Przykładowe podejście jest wciąż dość brutalne.
Jeśli kod zostanie ukończony w ciągu 5 minut na jednym komputerze, ale nie na innym, będzie wystarczająco blisko.
Przypadki testowe w postaci danych wejściowych: dane wyjściowe jakoW H R : N
5 4 4 : 1
5 4 3 : 2
5 4 2 : 2
5 4 1 : 5
7 5 5 : 1
7 5 4 : 2
7 5 3 : 2
7 5 2 : 4
8 8 8 : 1
8 8 7 : 2
8 8 6 : 2
8 8 5 : 2
8 8 4 : 2
8 8 3 : 4
7 6 4 : 2
7 6 2 : 4
11 7 4 : 3
11 9 4 : 4
13 13 6 : 3
11 11 5 : 3
15 14 7 : 2
16 16 8 : 2
Snippet, który pomaga wizualizować i bawić się pomysłami
Przykładowe rozwiązanie (niestosowane do golfa)
Tylko przykład dla małych wyjść (wynikających z promienia niewiele mniejszego niż szerokość i wysokość). Może obsłużyć dowolny z przypadków testowych, ale przekroczy limit czasu i zrezygnuje z większości większych przypadków.