サンタはエルフが一晩盗んだプレゼントをすべて再生産することができました!今、彼はそれらをパッケージングのために組立ラインに送らなければなりません。彼は通常、組み立てラインを監視するカメラを持っています。エルフが良い仕事をしていることを確認するためと、組み立てラインの写真が広告ポスターできれいに見えるためです[引用が必要]
残念ながら、彼のカメラは壊れたので、彼はあなたに組立ラインがどのように見えるかについてのシミュレーションを引き出して欲しいと思っています!
組立ラインを最大限の効率で機能させ、エラーや故障のリスクを減らすために、現在のすべてのボックスは同じ幅になっているため、コンベアベルトに完全に収まります。
チャレンジ
寸法で表されたプレゼントのリストが与えられたら、すべてのプレゼントを含むコンベアベルトを出力します。
プレゼントは次のように描かれます。
+----+
/ /|
+----+ |
| | +
| |/
+----+
このプレゼントには幅1、高さ2、および長さ4があります。プラス記号は辺の長さにはカウントされないため、長さ4のプレゼントは実際には6桁にまたがっています。
すべてのプレゼントは、最も近い2つのキャラクターの間に1つのスペースを空けて隣り合わせに描かれます。つまり、現在のボックスにlength l
とwidthがあるw
場合、次の現在のボックスの左下l + w + 4
隅は、前のボックスの左下隅のちょうど右側に位置するように、プレゼントの左下隅が間隔をあけられます。
存在するすべてのボックスが描画された後、最後の各行のボックス間のスペースwidth + 2
をアンダースコアで置き換えることにより、コンベアベルトが描画されます。
現在の箱のための最終的な出力(l, w, h)
のは、[(4, 1, 2), (8, 1, 3), (1, 1, 1)]
次のようになります。
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
フォーマット仕様
要素の1つがリスト全体で一貫している3つのタプルのリスト(幅)を選択するか、現在の幅に続いて長さを表す2タプルのリストを選択できます。各プレゼントの高さ。入力は任意の順序で適切な形式で取得できますが、プレゼントは入力として与えられたのと同じ順序で表示する必要があります。
ASCIIアートの適切な出力形式を選択できます(関数からの戻りを含む)。
テストケース
これらのテストケースは[(l, w, h), ...]
形式として提供されます。
[(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)
++
//|
// |
// |
++ |
|| |
|| |
|| |
+--------+ || |
/ /+_|| +
/ //__|| /
/ //___|| /
+--------+/____||/
+--------+_____++
ルール
- 標準的な抜け穴が適用されます
- これはcode-golfなので、バイト単位の最短回答が勝ちます
- 回答は受け付けられません
注:Advent Of Codeからこのチャレンジシリーズのインスピレーションを引き出しました。このサイトに所属していない