Der Weihnachtsmann konnte alle Geschenke, die die Elfen über Nacht gestohlen hatten, wiederaufbereiten! Jetzt muss er sie zum Verpacken ans Fließband schicken. Er hat in der Regel eine Kamera zur Überwachung der Montage beide Linie um sicherzustellen, dass die Elfen einen guten Job machen und weil Bilder Fließband schön aussehen auf Werbeplakate [citation benötigte]
Leider ist seine Kamera kaputt gegangen, und er möchte, dass Sie eine Simulation des Fließbands erstellen!
Alle vorhandenen Kartons haben die gleiche Breite, damit sie perfekt auf das Förderband passen, damit das Fließband mit maximaler Effizienz weiterarbeitet und das Risiko von Fehlern oder Ausfällen verringert wird.
Herausforderung
Geben Sie eine Liste der Geschenke aus, die durch ihre Abmessungen dargestellt werden, und geben Sie ein Förderband mit allen Geschenken aus.
Ein Geschenk ist wie folgt gezeichnet:
+----+
/ /|
+----+ |
| | +
| |/
+----+
Dieses Geschenk hat die Breite 1, die Höhe 2 und die Länge 4. Beachten Sie, dass die Pluszeichen nicht für die Seitenlänge zählen, sodass ein Geschenk mit der Länge 4 tatsächlich 6 Positionen umfasst.
Alle Geschenke werden nebeneinander mit einem Leerzeichen zwischen den nächsten beiden Zeichen gezeichnet. Das heißt, die linken unteren Ecken der Geschenke sind so voneinander beabstandet, dass, wenn ein Geschenkkarton Länge l
und Breite hat w
, die linke untere Ecke des nächsten Geschenkkartons genau l + w + 4
rechts von der linken unteren Ecke des vorherigen Kartons liegt.
Nachdem alle vorhandenen Kartons gezeichnet wurden, wird das Förderband gezeichnet, indem der Abstand zwischen den Kartons in jeder der letzten width + 2
Zeilen durch Unterstriche ersetzt wird.
Die endgültige Ausgabe für Geschenkboxen mit (l, w, h)
von [(4, 1, 2), (8, 1, 3), (1, 1, 1)]
wäre:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
Formatierungsspezifikationen
Sie können entweder eine Liste mit 3 Tupeln erstellen, wobei eines der Elemente über die gesamte Liste hinweg konsistent ist (das wäre die Breite), oder Sie nehmen die aktuelle Breite und dann eine Liste mit 2 Tupeln, die die Länge und repräsentieren Höhe jedes Geschenks. Sie können die Eingaben in beliebiger Reihenfolge und in einem angemessenen Format vornehmen. Die Geschenke müssen jedoch in der Reihenfolge angezeigt werden, in der sie als Eingabe angegeben wurden.
Sie können jedes vernünftige Ausgabeformat für die ASCII-Grafik auswählen (einschließlich der Rückkehr von einer Funktion).
Testfälle
Diese Testfälle werden als [(l, w, h), ...]
Format angegeben.
[(4, 1, 2), (8, 1, 3), (1, 1, 1)]:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
[(5, 3, 4), (8, 3, 1), (1, 3, 7)]:
+-+
/ /|
/ / |
+-----+ / / |
/ /| +-+ |
/ / | | | |
/ / | +--------+ | | |
+-----+ | / /| | | |
| | +___/ / +_| | +
| | /___/ / /__| | /
| | /___+--------+ /___| | /
| |/____| |/____| |/
+-----+_____+--------+_____+-+
[(0, 0, 0)] (this is the most interesting test case ever :P)
++
+++
++
[(8, 3, 0), (0, 3, 8)] (more zero cases)
++
//|
// |
// |
++ |
|| |
|| |
|| |
+--------+ || |
/ /+_|| +
/ //__|| /
/ //___|| /
+--------+/____||/
+--------+_____++
Regeln
- Es gelten Standardlücken
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes
- Es wird keine Antwort akzeptiert
Hinweis: Ich habe mich für diese Herausforderungsserie von Advent Of Code inspirieren lassen . Ich habe keine Zugehörigkeit zu dieser Site
Eine Liste aller Herausforderungen in der Serie finden Sie im Abschnitt "Verknüpft" der ersten Herausforderung hier .