J'ai un tas de planches que je dois empiler dans un espace aussi petit que possible. Malheureusement, les planches tombent si je les empile de plus de 10 de haut. J'ai besoin d'un programme pour me dire comment empiler les planches pour prendre le moins d'espace horizontal possible, sans empiler les planches de plus de dix de haut, ou avoir des planches suspendues sur un espace vide.
Ta tâche:
Écrivez un programme ou une fonction qui, lorsqu'il est fourni un tableau contenant les longueurs de cartes, génère en tant qu'art ASCII le moyen d'empiler les cartes pour conserver autant d'espace horizontal que possible, sans empiler les cartes de plus de 10 de haut ou avoir une partie quelconque Conseil traîner sur un espace vide. Votre art ASCII doit montrer la configuration des cartes, chacune étant représentée avec un caractère différent. Il y aura un maximum de 20 planches. Par exemple, si l'entrée était [2,2,4,2,2,4,4,4], une sortie possible est:
dhh
dgg
dff
dee
abc
abc
abc
abc
qui est une configuration stable (bien que cela tomberait en ~ 0,1 seconde dans la vraie vie).
Contribution:
Un tableau contenant jusqu'à 20 entiers, montrant les longueurs des cartes.
Production:
Art ASCII montrant les configurations des cartes, comme indiqué ci-dessus.
Cas de test:
Notez qu'il peut y avoir d'autres solutions pour les cas de test et que les caractères affichés pour chaque carte peuvent être différents.
[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
Notation:
C'est le code-golf , le score le plus bas en octets gagne