Eu tenho um monte de pranchas que preciso empilhar no menor espaço possível. Infelizmente, as tábuas caem se eu as empilhar mais de 10. Preciso de um programa para me dizer como empilhar as tábuas para ocupar o menor espaço horizontal possível, sem empilhar tábuas com mais de dez metros de altura ou com tábuas penduradas no espaço vazio.
Sua tarefa:
Escreva um programa ou função que, quando fornecida uma matriz que contenha os comprimentos das placas, produza como ASCII a maneira de empilhar as placas para conservar o máximo de espaço horizontal possível, sem empilhar as placas com mais de 10 metros de altura ou ter qualquer parte de qualquer placa pendurada para fora sobre o espaço vazio. Sua arte ASCII deve mostrar a configuração das placas, com cada uma delas mostrando um caractere diferente. Haverá no máximo 20 placas. Por exemplo, se a entrada foi [2,2,4,2,2,4,4,4], uma saída possível é:
dhh
dgg
dff
dee
abc
abc
abc
abc
que é uma configuração estável (embora isso caia em ~ 0,1 segundos na vida real).
Entrada:
Uma matriz contendo até 20 números inteiros, mostrando os comprimentos das placas.
Resultado:
Arte ASCII mostrando as configurações das placas, conforme descrito acima.
Casos de teste:
Observe que pode haver outras soluções para os casos de teste e os caracteres mostrados para cada quadro podem ser diferentes.
[12,2,2,2,3,4,4,8,8] -> ffgghhiii
ddddeeeeeeee
bbbbbbbbcccc
aaaaaaaaaaaa
[4,4,4,4,4,4,4,4,4,4,4,4] -> llll
aaaa
cfghk
cfghk
cfghk
cfghk
debij
debij
debij
debij
[4,4,4,4,4,4,3,3,3,2,2,2,1] -> jjml
iiil
hhhk
gggk
ffff
eeee
dddd
cccc
bbbb
aaaa
Pontuação:
Isso é código-golfe , a menor pontuação em bytes ganha