У меня есть куча досок, которые нужно разместить как можно меньше. К сожалению, доски падают, если я уложу их более чем на 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
Подсчет очков:
Это код-гольф , выигрывает самая низкая оценка в байтах