Mam kilka desek, które muszę układać na możliwie najmniejszej przestrzeni. Niestety plansze przewracają się, jeśli ułożę je w stosy o więcej niż 10. Potrzebuję programu, który powie mi, jak układać deski w stosy, aby zajmować jak najmniej przestrzeni poziomej, bez układania desek w stosy o wysokości większej niż dziesięć lub bez zawieszania desek nad pustą przestrzenią.
Twoje zadanie:
Napisz program lub funkcję, która, gdy otrzyma tablicę zawierającą długości desek, generuje w formacie ASCII sposób układania desek w stos, aby zaoszczędzić jak najwięcej przestrzeni poziomej, bez układania desek w stos powyżej 10 lub bez jakiejkolwiek części dowolnej tablica wisząca nad pustą przestrzenią. Twoja grafika ASCII powinna pokazywać konfigurację plansz, przy czym każda z nich ma inną postać. Będzie maksymalnie 20 plansz. Na przykład, jeśli dane wejściowe to [2,2,4,2,2,4,4,4], możliwe dane wyjściowe to:
dhh
dgg
dff
dee
abc
abc
abc
abc
która jest stabilną konfiguracją (chociaż w rzeczywistości spadłaby w ciągu ~ 0,1 sekundy).
Wejście:
Tablica zawierająca do 20 liczb całkowitych, pokazująca długości płyt.
Wynik:
Grafika ASCII przedstawiająca konfiguracje płyt, jak opisano powyżej.
Przypadki testowe:
Zauważ, że mogą być inne rozwiązania dla przypadków testowych, a znaki pokazane dla każdej planszy mogą być inne.
[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
Punktacja:
To jest golf golfowy , najniższy wynik w bajtach wygrywa