En tant que roadie du groupe, vous devez emballer le camion. Votre programme placera les colis de manière à ce qu'ils tiennent à la plus petite hauteur.
Un camion mal emballé
Règles
Les colis peuvent être tournés de multiples de 90 degrés. Les colis peuvent se toucher mais ne doivent pas se chevaucher.
La sortie est l'image reconditionnée (vers un fichier ou une sortie standard). Votre programme peut utiliser n'importe quel format d'image raster en entrée ou en sortie.
Votre programme doit accepter n'importe quel nombre de packages de formes variées dans des images jusqu'à 4000x4000 pixels. Il ne doit pas être codé en dur pour cette image de test. Si je soupçonne une soumission d'être adaptée à cette image spécifique, je me réserve le droit de la remplacer par une nouvelle image de test.
But
Votre score est la plus petite hauteur d'un rectangle qui contiendra votre arrangement (la largeur est la largeur du rectangle d'entrée). En cas d'égalité, la première inscription l'emporte.
Les failles standard sont interdites comme d'habitude.
la source
Réponses:
Langage: Java
Score:
555533Je viens d'essayer de forcer une solution par force brute en itérant sur les formes par ordre décroissant de surface (périmètre en cas d'égalité) et en essayant toutes les possibilités d'emballage jusqu'à ce qu'un emballage valide soit trouvé pour cette forme, point auquel la position de la forme est fixée et l'algorithme passe à la forme suivante. Afin d'améliorer, espérons-le, la qualité du résultat lors de la recherche d'un emballage valide, toutes les positions possibles sont essayées avec la forme tournée de sorte qu'elle soit plus haute que large.
Remarque: cela suppose que la ou les images d'entrée ont toutes les formes séparées par un espace blanc. Il prend la largeur maximale de la sortie comme premier argument et une liste d'images de forme comme autres arguments (chaque image de forme peut avoir une ou plusieurs formes séparées par au moins une ligne de pixels blancs)
La solution que cela produit (prend environ
4 minutes30 secondes sur ma machine) est:En regardant cette image, il semble que le résultat puisse être amélioré en itérant sur toutes les formes après l'emballage et en essayant de les déplacer un peu vers le haut. Je pourrais essayer de le faire plus tard.la source