Como roadie da banda, você precisa arrumar o caminhão. Seu programa colocará os pacotes de forma que eles caibam na menor altura.
Um caminhão mal embalado
Regras
Os pacotes podem ser rotacionados em múltiplos de 90 graus. Os pacotes podem tocar, mas não devem se sobrepor.
A saída é a imagem reembalada (para arquivo ou stdout). Seu programa pode usar qualquer formato de imagem raster de entrada ou saída.
Seu programa deve aceitar qualquer número de pacotes de várias formas em imagens de até 4000x4000 pixels. Não deve ser codificado para esta imagem de teste. Se eu suspeitar que qualquer envio seja adaptado a essa imagem específica, reservo-me o direito de substituí-lo por uma nova imagem de teste.
Ponto
Sua pontuação é a menor altura de um retângulo que conterá sua organização (a largura é a largura do retângulo de entrada). No caso de empate, a entrada mais antiga vence.
As brechas padrão são proibidas como de costume.
fonte
Respostas:
Linguagem: Java
Pontuação:
555533Eu apenas tentei tentar forçar a força bruta de uma solução, iterando as formas em ordem decrescente de área (perímetro em caso de amarração) e testando todas as possibilidades de empacotamento até encontrar uma embalagem válida para a forma em que a posição da forma é fixa e o algoritmo segue para a próxima forma. Com o objetivo de melhorar a qualidade do resultado ao procurar primeiro uma embalagem válida, todas as posições possíveis são tentadas com a forma girada, de forma que seja mais alta do que larga.
Nota: isso pressupõe que as imagens de entrada tenham todas as formas separadas por espaço em branco. Ele usa a largura máxima da saída como primeiro argumento e uma lista de imagens de forma como os outros argumentos (cada imagem de forma pode ter uma ou mais formas separadas por pelo menos uma linha de pixels brancos)
A solução produzida (leva cerca de
4 minutos e30 segundos na minha máquina) é:Olhando para esta foto, parece que o resultado pode ser melhorado, repetindo todas as formas após a embalagem e tentando movê-las um pouco mais. Eu poderia tentar fazer isso mais tarde.fonte