Diese Herausforderung basiert auf einer anderen ähnlichen Herausforderung. Da das Finden der effizientesten Packung von Rechtecken NP-schwer ist (dh die Lösung ist leicht zu überprüfen, aber schwer zu finden), ist diese Herausforderung viel einfacher als diese hier
Diese Herausforderung
Stellen Sie anhand einer Reihe von Rechtecken fest, ob sie einen rechteckigen Raum ohne Lücken oder Überlappungen ausfüllen.
Eingang
Die Eingabe kann in zwei Formen erfolgen, von denen eine mit einer Strafstrafe verbunden ist.
Das erste: Es enthält eine Liste von Unterlisten mit einer Länge von jeweils 4. Diese Liste enthält 4 Ganzzahlen, die die Koordinaten entgegengesetzter Scheitelpunkte sind. Da alle Rechtecke horizontal / vertikal sind, gibt es keine Unklarheit darüber, wo sich das Rechteck befindet. Jede Unterliste enthält vier Ganzzahlen, die der Reihe nach die x-Koordinate des ersten Scheitelpunkts, die y-Koordinate des ersten Scheitelpunkts, die x-Koordinate des zweiten Scheitelpunkts und die y-Koordinate des zweiten Scheitelpunkts sind.
Das zweite: Es enthält vier Listen von Ganzzahlen mit derselben Länge. Die vier Listen repräsentieren die verschiedenen Koordinaten. Wenn Sie sich die Eingabeoption 1 als Matrix vorstellen, ist die Eingabe hier nur die Transponierte der Matrix. Diese Eingabe trägt eine +20%
Byte-Strafe.
Ausgabe
Einfache Wahrheits- / Falschausgabe.
Spezifikationen
Wenn es ein Rechteck mit dem Bereich 0 gibt (dh x1 == x2 || y1 == y2
), ignorieren Sie dieses Rechteck ( [0 0 1 1], [2 2 3 2]
ist also gültig). Diese Spezifikation soll es den Menschen erschweren, einfach die min / max x / y-Werte zu erhalten.
x1 <= x2
und y1 <= y2
sind nicht immer wahr. Wenn x1 > x2 || y1 > y2
das Rechteck kein Nullbereichsrechteck ist; Vielmehr nimmt es den rechteckigen Raum zwischen (x1, y1)
und ein (x2, y2)
.
Koordinaten können negativ sein. In diesem Fall belegen sie immer noch den Raum zwischen den Koordinaten.
Das Rechteck ganz links befindet sich nicht immer bei (0, 0)
. Daher muss der rechteckige Raum, der ausgefüllt wird, nicht unbedingt in der oberen linken Ecke liegen (0, 0)
.
(Vielen Dank an @xnor für den Hinweis auf diese Unklarheiten)
Bitte geben Sie an, wie Sie Ihre Eingabe wünschen und wie Ihre Ausgabe dargestellt wird.
Wertung
Die Punktzahl ist die Größe des Codes in Bytes zuzüglich einer Byte-Strafe, falls zutreffend. Die niedrigste Punktzahl am 15. Dezember gewinnt.
Testfälle
0 0 1 2
1 0 3 1 ==> true
1 1 3 2
0 0 2 2
0 0 1 1 ==> false
0 0 0 0
0 0 1 1
2 2 2 2 ==> true
0 1 2 1
Viel Glück, viel Spaß beim Golfen!
x1 <= x2
und hat y1 <= y2
? Ist ein Flächen-0-Rechteck mit x1 == x2
und y1 <= y2
möglich?
x1 > x2
und y1 > y2
, ist dies ein Flächen-Null-Rechteck, weil die Koordinaten vertauscht werden?