Können diese Rechtecke einen rechteckigen Raum ausfüllen?
Bei einer Reihe von Rechtecken werden Sie gefragt, ob sie so angeordnet werden können, dass sie einen rechteckigen Raum ausfüllen.
Technische Daten
Angesichts einer Reihe von willkürlichen m x n
Rechtecken; 0 <= m, n <= 1000
Bestimmen Sie, ob es möglich ist, sie so anzuordnen, dass sie genau einen rechteckigen Bereich ohne Löcher oder Überlappungen abdecken. Die Rechtecke können nicht gedreht werden und jedes Rechteck darf nur einmal platziert werden.
Eingang
Die Eingabe hierfür ist sehr flexibel, solange die Eingabe eine Liste von Dimensionen mit zwei Räumen enthält. Zum Beispiel sind beide der folgenden Bedingungen gültig:
Durch Leerzeichen getrennt, Rückkehr
1 2
1 5
4 5
3 6
Liste der Abmessungen
[[1, 2], [1, 5], [4, 5], [3, 6]]
Ausgabe
Jede Art von wahr / falsch-Werten wie wahr / falsch, 0/1, T / F, wahr / falsch usw. Wenn Sie eine Ausgabemethode verwenden möchten, die nicht sehr offensichtlich ist, geben Sie dies bitte in Ihrer Antwort an.
Beispiele
Testfall 1
Eingang:
1 1
1 5
2 6
Ausgabe:
true
(oder ähnliches)
So arrangieren Sie es:
XYYYYY
ZZZZZZ
ZZZZZZ
Testfall 2
Eingang:
1 1
2 2
Ausgabe:
false
(oder ähnliches)
Erläuterung: Es wird offensichtlich, dass Sie nicht zwei Quadrate unterschiedlicher Größe anordnen und ihre Kanten in eine Linie bringen können.
Testfall 3
Eingang:
1 1
1 2
1 2
2 1
2 1
Ausgabe:
true
(oder ähnliches) So arrangieren Sie es:
AAB
DEB
DCC
Wie @ETHProductions hervorhob, können Sie für alle anderen Testfälle weiterhin Rechtecke mit einer gemeinsamen Kantenlänge kombinieren, bis Sie nur noch ein Rechteck haben. In diesem Testfall wird also nur der Code gebrochen, der diese Idee verwendet.
Testfall 4
Eingang:
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
Ausgabe:
true
(oder ähnliches)
So arrangieren Sie es:
AAABBBBEE
AAACCDDDD
FFFFFGGGH
FFFFFGGGH
IIIJJKKLH
IIIMMMMMH
Hinweis : Sie müssen nicht angeben, wie es angeordnet werden soll. Sie müssen nur bestimmen, ob es nicht angeordnet werden kann.
Das ist Codegolf, also gewinnt die kürzeste Antwort in Bytes! Ich akzeptiere die kürzeste Antwort ab dem 14. Januar, kann sie aber auch später einreichen, da ich immer noch upvotes geben kann! :)
Viel Spaß beim Golfen!
~ AL
PS Wenn Sie wissen, welches Tag auf dieses Problem angewendet werden soll, fügen Sie es bitte hinzu. Ich habe absolut keine Ahnung, was ich als anderes Tag als Code-Golf einsetzen soll.
BEARBEITEN : Ihr Programm sollte in der Lage sein, bis zu 25 Rechtecke in höchstens 10 Sekunden auf einem anständigen Computer zu verarbeiten (ich werde in dieser Regel recht flexibel sein).
EDIT : Ich habe die Einreichungsfrist bis zum letzten Tag des Jahres verlängert, aber ich bezweifle, dass ich bis dahin eine Antwort bekomme ...
EDIT : Ich habe die Einreichungsfrist um 2 Wochen verlängert. Wenn bis dahin keine weiteren Antworten eingehen, wird die aktuelle C-Antwort akzeptiert! :)
[[1, 2], [2, 1], [1, 1], [1, 2], [2, 1]]
(was arrangiert werden kann ABB ACD EED
). Sie können diesen einfachen Testfall hinzufügen.