Als Roadie der Band muss man den Truck packen. Ihr Programm platziert die Pakete so, dass sie in die kleinste Höhe passen.
Ein schlecht gepackter Lastwagen
Regeln
Pakete können um ein Vielfaches von 90 Grad gedreht werden. Pakete dürfen sich berühren, aber nicht überlappen.
Die Ausgabe ist das neu gepackte Bild (in Datei oder stdout). Ihr Programm kann jedes Eingabe- oder Ausgabe-Rasterbildformat verwenden.
Ihr Programm muss eine beliebige Anzahl von Paketen mit verschiedenen Formen in Bildern mit einer Größe von bis zu 4000 x 4000 Pixel akzeptieren. Es darf für dieses Testbild nicht fest codiert sein. Wenn ich den Verdacht habe, dass ein Beitrag auf dieses bestimmte Bild zugeschnitten ist, behalte ich mir das Recht vor, ihn durch ein neues Testbild zu ersetzen.
Ergebnis
Ihre Punktzahl ist die kleinste Höhe eines Rechtecks, das Ihre Anordnung enthält (die Breite ist die Breite des eingegebenen Rechtecks). Bei einem Gleichstand gewinnt der früheste Eintrag.
Standardlücken sind wie gewohnt verboten.
quelle
Antworten:
Sprache: Java
Spielstand:
555533Ich habe versucht, eine Lösung zu erzwingen, indem ich die Formen in der Reihenfolge abnehmender Fläche (Umfang im Falle eines Bindens) durchlaufen habe und alle Verpackungsmöglichkeiten ausprobiert habe, bis eine gültige Verpackung für diese Form gefunden wurde, an der die Position der Form festgelegt ist und der Algorithmus fährt mit der nächsten Form fort. Um hoffentlich die Qualität des Ergebnisses bei der Suche nach einer gültigen Packung zu verbessern, werden zuerst alle möglichen Positionen mit der Form so gedreht, dass sie höher als breiter ist.
Hinweis: Dies setzt voraus, dass die Eingabebilder alle durch Leerzeichen getrennten Formen haben. Als erstes Argument wird die maximale Breite der Ausgabe und als anderes Argument eine Liste von Formbildern verwendet (jedes Formbild kann eine oder mehrere Formen haben, die durch mindestens eine Zeile weißer Pixel getrennt sind).
Die daraus resultierende Lösung (die auf meinem Computer ca.
4 Minuten und30 Sekunden dauert ) lautet:Auf diesem Bild sieht es so aus, als könnte das Ergebnis verbessert werden, indem alle Formen nach dem Packen iteriert werden und versucht wird, sie alle ein wenig nach oben zu verschieben. Das könnte ich später versuchen.quelle