Ich habe ein paar Bretter, die ich auf kleinstem Raum stapeln muss. Leider fallen die Bretter um, wenn ich sie mehr als 10 hoch staple. Ich brauche ein Programm, das mir sagt, wie man die Bretter stapelt, um so wenig horizontalen Platz wie möglich einzunehmen, ohne Bretter mit einer Höhe von mehr als zehn zu stapeln oder Bretter über dem leeren Raum hängen zu lassen.
Deine Aufgabe:
Schreiben Sie ein Programm oder eine Funktion, die bei einem Array mit den Längen der Karten die ASCII-Kunst ausgibt, um die Karten zu stapeln, um so viel horizontalen Platz wie möglich zu sparen, ohne die Karten mehr als 10 hoch zu stapeln oder einen Teil davon zu haben Brett hängt über leerem Raum. Ihre ASCII-Grafik sollte die Konfiguration der Karten zeigen, wobei jede mit einem anderen Zeichen dargestellt wird. Es gibt maximal 20 Boards. Wenn die Eingabe beispielsweise [2,2,4,2,2,4,4,4] war, ist eine mögliche Ausgabe:
dhh
dgg
dff
dee
abc
abc
abc
abc
Dies ist eine stabile Konfiguration (obwohl dies im wirklichen Leben in ~ 0,1 Sekunden umfallen würde).
Eingang:
Ein Array mit bis zu 20 Ganzzahlen, das die Länge der Karten anzeigt.
Ausgabe:
ASCII-Grafik zeigt die oben beschriebenen Konfigurationen der Karten.
Testfälle:
Beachten Sie, dass es möglicherweise andere Lösungen für die Testfälle gibt und die für jede Karte angezeigten Zeichen unterschiedlich sein können.
[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
Wertung:
Dies ist Code-Golf , niedrigste Punktzahl in Bytes gewinnt