Mikołaj był w stanie zregenerować wszystkie prezenty, które elfy ukradły przez noc! Teraz musi wysłać je na linię montażową w celu pakowania. Zwykle ma aparat do nadzorowania linii montażowej, aby upewnić się, że elfy wykonują dobrą robotę, i ponieważ zdjęcia z linii montażowej wyglądają ładnie na plakatach reklamowych [potrzebne źródło]
Niestety jego kamera się zepsuła, więc chciałby, abyś wyciągnął symulację tego, jak wyglądałaby linia montażowa!
W celu utrzymania maksymalnej wydajności linii montażowej i zmniejszenia ryzyka błędu lub awarii wszystkie obecne pudełka mają tę samą szerokość, dzięki czemu idealnie pasują do taśmy przenośnika.
Wyzwanie
Biorąc pod uwagę listę prezentów reprezentowanych przez ich wymiary, wyjmij przenośnik taśmowy ze wszystkimi prezentami.
Prezent jest rysowany w taki sposób:
+----+
/ /|
+----+ |
| | +
| |/
+----+
Ten prezent ma szerokość 1, wysokość 2 i długość 4. Zauważ, że znaki plus nie liczą się do długości boku, więc prezent o długości 4 w rzeczywistości obejmuje 6 pozycji.
Wszystkie prezenty są rysowane obok siebie, z jedną spacją między najbliższymi dwoma postaciami; to znaczy, lewe dolne rogi prezentów są rozmieszczone w taki sposób, że jeśli obecne pudełko ma długość li szerokość w, lewy dolny róg następnego pudełka będzie dokładnie na l + w + 4prawo od lewego dolnego rogu poprzedniego pudełka.
Po narysowaniu wszystkich obecnych pudełek, taśma przenośnika jest rysowana przez zastąpienie odstępu między pudełkami na każdej z ostatnich width + 2linii podkreślnikami.
Ostateczne wyjście obecne pola (l, w, h)z [(4, 1, 2), (8, 1, 3), (1, 1, 1)]byłoby:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
Specyfikacja formatowania
Możesz wybrać albo wzięcie listy 3-krotek, w której jeden z elementów jest spójny na całej liście (czyli szerokość), albo możesz wziąć obecną szerokość, a następnie listę 2-krotek reprezentujących długość i wysokość każdego prezentu. Możesz przyjmować dane wejściowe w dowolnej kolejności i w dowolnym rozsądnym formacie, ale prezenty muszą być wyświetlane w tej samej kolejności, w jakiej zostały podane jako dane wejściowe.
Możesz wybrać dowolny rozsądny format wyjściowy dla sztuki ASCII (w tym powrót z funkcji).
Przypadki testowe
Te przypadki testowe podano w [(l, w, h), ...]formacie.
[(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)
++
//|
// |
// |
++ |
|| |
|| |
|| |
+--------+ || |
/ /+_|| +
/ //__|| /
/ //___|| /
+--------+/____||/
+--------+_____++
Zasady
- Obowiązują standardowe luki
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach
- Żadna odpowiedź nie zostanie zaakceptowana
Uwaga: Inspirację do tej serii wyzwań czerpałem z Advent Of Code . Nie mam powiązań z tą stroną
Możesz zobaczyć listę wszystkich wyzwań w serii, patrząc na sekcję „Połączone” pierwszego wyzwania tutaj .