tło
Śluzowce są niesamowite. Jeśli umieścisz je na powierzchni ze źródłami żywności, rozłożą wąsy, aby znaleźć żywność, po czym utworzą sieć połączeń między źródłami. W tym wyzwaniu symulujesz śluzowatą pleśń szukającą pożywienia. Co więcej, ta konkretna pleśń zatrzyma się, gdy zostanie wystarczająco znaleziona.
Wejście
Twoje dane wejściowe powinny być listą L
współrzędnych całkowitych 2D w rodzimym formacie twojego języka i nieujemną liczbą całkowitą N
. Lista L
jest na pewno wolna od duplikatów, ale nie można jej posortować. Wartość wejściowa N
wynosi od 0 do długości L
włącznie.
Lista L
przedstawia zestaw współrzędnych dla źródeł żywności. Na przykład lista
[(0,0),(2,-1),(3,1),(0,4),(5,5)]
może być interpretowane wizualnie jako
o
o
o
o
o
Wynik
Twój wynik to kolejna pozbawiona duplikatów lista K
współrzędnych całkowitych 2D w tym samym formacie co dane wejściowe. Reprezentuje sieć utworzoną przez śluzowatą pleśń i musi spełniać następujące warunki:
- Przecięcie
L
iK
ma dokładnie rozmiarN
. - Zestaw
K
jest połączony jako podzbiór siatki liczb całkowitych (poprzez przylegania ortogonalne lub ukośne). - Jeśli jakaś współrzędna z
K
zostanie usunięta, nie spełnia już dwóch pierwszych warunków.
Zauważ, że jeśli N = 0
, wyjście musi być pustą listą.
Przykładem akceptowalnego wyjścia dla powyższej listy L
i N = 4
byłoby
[(0,0),(0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,3),(3,2),(3,1),(3,5),(4,5),(5,5)]
które mogą być wizualizowane jako
xxO
Oxx
x x
x x
x O
O
o
gdzie każdy O
reprezentuje współrzędną zarówno L
i K
, a każdy x
reprezentuje współrzędną w K
ale nie L
. Inne wyniki są również dopuszczalne, a „wąsy” nie muszą być możliwie najkrótsze. Na przykład jest to również akceptowalne rozwiązanie:
xxOxx
Oxx x
x x
x x
x o x
O x
Ox
Zasady
Zarówno dane wejściowe, jak i wyjściowe powinny być listami, a nie zestawami lub innymi typami danych. Współrzędne same mogą być listami lub krotkami. W razie potrzeby możesz zmienić kolejność dwóch wejść.
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
Twój program powinien działać na tych listach dla wszystkich odpowiednich wartości N
.
[]
[(2,3)]
[(0,0),(1,0),(0,1),(1,1)]
[(0,0),(2,-1),(3,1),(0,4),(5,5)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3),(0,1),(0,2),(3,1),(3,2),(8,1),(8,2),(-5,1),(-5,2)]
[(0,0),(20,0),(15,15),(-10,4),(-10,3),(0,-5),(7,6),(7,7),(8,8),(9,8),(10,-2),(-1,12),(-3,10)]
[(0,0),(1,0),(2,0),(3,0),(5,0),(6,0),(7,0),(0,9),(1,9),(2,9),(3,8),(4,9),(5,10),(6,10),(7,9),(3,3),(4,4),(5,5)]
Wizualizowane:
===
o
===
oo
oo
===
o
o
o
o
o
===
oooo
oooo
===
oooo
o o o o
o o o o
oooo
===
o
o
o
oo
o
o
o
o
o o
o
o
===
oo
ooo o o
o
o
o
o
oooo ooo
źródło