Ho un sacco di schede che devo impilare nel minor spazio possibile. Sfortunatamente, le schede cadono se le impilo più di 10. Ho bisogno di un programma per dirmi come impilare le schede per occupare il minor spazio orizzontale possibile, senza impilare le schede più alte di dieci o avere le schede sospese nello spazio vuoto.
Il tuo compito:
Scrivi un programma o una funzione, che quando viene dato un array contenente le lunghezze delle schede, genera come arte ASCII il modo di impilare le schede per conservare il maggior spazio orizzontale possibile, senza impilare le schede più alte di 10 o avere qualsiasi parte di qualsiasi tavola sospesa nello spazio vuoto. La tua arte ASCII dovrebbe mostrare la configurazione delle schede, con ognuna mostrata usando un carattere diverso. Ci saranno un massimo di 20 schede. Ad esempio, se l'ingresso era [2,2,4,2,2,4,4,4], un possibile output è:
dhh
dgg
dff
dee
abc
abc
abc
abc
che è una configurazione stabile (sebbene ciò cadrà in ~ 0,1 secondi nella vita reale).
Ingresso:
Un array contenente fino a 20 numeri interi, che mostra le lunghezze delle schede.
Produzione:
Arte ASCII che mostra le configurazioni delle schede, come indicato sopra.
Casi test:
Si noti che potrebbero esserci altre soluzioni per i casi di test e che i caratteri mostrati per ciascuna scheda potrebbero essere diversi.
[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
punteggio:
Questo è code-golf , il punteggio più basso in byte vince