Czy te prostokąty mogą wypełnić prostokątną przestrzeń?
Biorąc pod uwagę wiele prostokątów, pytamy Cię, czy można je ustawić tak, aby wypełniały prostokątną przestrzeń.
Okular
Biorąc pod uwagę garść dowolnych m x n
prostokątów; 0 <= m, n <= 1000
, określ, czy można je ułożyć tak, aby pokrywały dokładnie prostokątny obszar bez żadnych otworów lub zakładek. Prostokąty nie mogą być obracane, a każdy prostokąt może być umieszczony tylko raz.
Wkład
Dane wejściowe w tym celu są bardzo elastyczne, o ile dane wejściowe dają jakąś listę wymiarów 2-przestrzeni. Na przykład oba poniższe są poprawne:
Rozdzielone spacją, Return
1 2
1 5
4 5
3 6
Lista wymiarów
[[1, 2], [1, 5], [4, 5], [3, 6]]
Wydajność
Wszelkie wartości prawda / fałsz, takie jak prawda / fałsz, 0/1, T / F, prawda / fałsz itp. Jeśli zamierzasz użyć metody wyjściowej, która nie jest zbyt oczywista, proszę podać w swojej odpowiedzi.
Przykłady
Przypadek testowy 1
Wkład:
1 1
1 5
2 6
Wyjście:
true
(lub coś podobnego)
Jak to zorganizować:
XYYYYY
ZZZZZZ
ZZZZZZ
Przypadek testowy 2
Wkład:
1 1
2 2
Wyjście:
false
(lub coś podobnego)
Objaśnienie: Staje się oczywiste, że nie można ustawić dwóch kwadratów o różnych rozmiarach i ustawić ich krawędzi w jednej linii.
Przypadek testowy 3
Wkład:
1 1
1 2
1 2
2 1
2 1
Wyjście:
true
(lub coś podobnego) Jak to zorganizować:
AAB
DEB
DCC
Jak wskazano @ETHProductions, dla wszystkich pozostałych przypadków testowych możesz nadal łączyć prostokąty o wspólnej długości krawędzi, dopóki nie będziesz mieć tylko jednego prostokąta, więc ten przypadek testowy służy tylko do złamania kodu używającego tego pomysłu.
Przypadek testowy 4
Wkład:
3 2
4 1
2 1
4 1
2 1
5 2
3 2
1 4
3 2
2 1
2 1
1 1
5 1
Wyjście:
true
(lub coś podobnego)
Jak to zorganizować:
AAABBBBEE
AAACCDDDD
FFFFFGGGH
FFFFFGGGH
IIIJJKKLH
IIIMMMMMH
Uwaga : Nie musisz określać, jak to zaaranżować, musisz jedynie ustalić, czy nie można tego zaaranżować.
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach! Przyjmę najkrótszą odpowiedź od 14 stycznia, ale nie krępuj się przesyłać odpowiedzi później, ponieważ wciąż mogę wyrazić opinię! :)
Miłej gry w golfa!
~ AL
PS Jeśli wiesz, jaki tag należy zastosować do tego problemu, proszę go dodać, absolutnie nie mam pojęcia, co umieścić jako tag inny niż kod-golf.
EDYCJA : Twój program powinien być w stanie przetworzyć do 25 prostokątów, najwyżej 10 sekund na przyzwoitym komputerze (będę dość elastyczny na tej zasadzie).
EDYCJA : Przedłużyłem termin przyjmowania zgłoszeń do ostatniego dnia roku, ale wątpię, czy do tego czasu otrzymam odpowiedź ...
EDYCJA : Przedłużyłem termin przyjmowania zgłoszeń o 2 tygodnie, więc jeśli do tego czasu nie otrzymają więcej odpowiedzi, aktualna odpowiedź C zostanie zaakceptowana! :)
[[1, 2], [2, 1], [1, 1], [1, 2], [2, 1]]
(co można ustawić ABB ACD EED
). Możesz dodać ten prosty przypadek testowy.