To wyzwanie jest oparta na następującej układanki: Jesteś podawany był n
przez n
siatki z n
komórek oznaczonych. Twoim zadaniem jest podzielenie siatki na n
części, z których każda składa się z dokładnie n
komórek, z których każda zawiera dokładnie jedną zaznaczoną komórkę.
Przykład
Oto łamigłówka po lewej stronie i jej (unikalne) rozwiązanie po prawej:
Wyzwanie
Otrzymasz zestaw n
współrzędnych zerowanych w dowolnym rozsądnym formacie.
[(0,0), (0,3), (1,0), (1,1), (2,2)]
Twoim zadaniem jest napisanie programu, który zwraca dowolną prawidłową partycję (ponownie, w dowolnym rozsądnym formacie).
[
[(0,0), (0,1), (0,2), (1,2), (1,3)],
[(0,3), (0,4), (1,4), (2,4), (3,4)],
[(1,0), (2,0), (3,0), (4,0), (4,1)],
[(1,1), (2,1), (3,1), (3,2), (4,2)],
[(2,2), (2,3), (3,3), (4,3), (4,4)]
]
Jeśli układanka nie ma rozwiązania, program powinien to zaznaczyć, zgłaszając błąd lub zwracając puste rozwiązanie.
Przykłady wejścia / wyjścia
[(0,0)] => [[(0,0)]]
[(0,0), (1,1)] => [
[(0,0), (1,0)],
[(0,1), (1,1)]
]
[(0,0), (0,1), (1,0)] => [] (no solution)
[(0,0), (0,1), (0,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (1,1), (2,1)],
[(0,2), (1,2), (2,2)],
]
[(0,0), (0,2), (1,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (0,2), (1,1)],
[(1,2), (2,1), (2,2)],
]
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy kod.
code-golf
combinatorics
grid
set-partitions
Peter Kagey
źródło
źródło
Odpowiedzi:
JavaScript (ES7), 166 bajtów
Wypróbuj online!
W jaki sposób?
++
źródło