У мене є купа дощок, які мені потрібно скласти в якомога менше місця. На жаль, дошки обвалюються, якщо я укладаю їх понад 10 високих. Мені потрібна програма, яка підкаже, як укладати дошки, щоб зайняти якомога менше горизонтального простору, не укладаючи дошки більше десяти висот або розміщуючи дошки над порожнім простором.
Ваше завдання:
Напишіть програму або функцію, яка, коли дається масив, що містить довжину дощок, видає як ASCII мистецтво спосіб укладати дошки, щоб зберегти якомога більше горизонтального простору, не укладаючи дошки більше 10 висоти або не маючи ніякої частини будь-якої дошка, що бовтається над порожнім простором. У вашій графіці ASCII повинно відображатися конфігурація дощок, при цьому кожна з них має інший символ. Буде максимум 20 дощок. Наприклад, якщо вхід був [2,2,4,2,2,4,4,4], можливий вихід:
dhh
dgg
dff
dee
abc
abc
abc
abc
що є стабільною конфігурацією (хоча в реальному житті це перепадає за ~ 0,1 секунди).
Вхід:
Масив, що містить до 20 цілих чисел, що показують довжину дощок.
Вихід:
ASCII мистецтво, що показує конфігурації дощок, як зазначено вище.
Випробування:
Зверніть увагу, що для тестових випадків можуть бути інші рішення, і символи, показані для кожної дошки, можуть бути різними.
[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
Оцінка:
Це код-гольф , найнижчий бал у виграші байтів