Babbo Natale è stato in grado di ricostruire tutti i regali rubati dagli elfi durante la notte! Ora deve inviarli alla catena di montaggio per l'imballaggio. Di solito ha una telecamera per sorvegliare la catena di montaggio sia per assicurarsi che gli elfi stiano facendo un buon lavoro sia perché le immagini della catena di montaggio sembrano belle sui poster pubblicitari [citazione necessaria]
Sfortunatamente, la sua macchina fotografica si è rotta, quindi vorrebbe che tu disegnassi una simulazione di come sarebbe stata la catena di montaggio!
Al fine di mantenere la catena di montaggio alla massima efficienza e ridurre il rischio di errori o guasti, tutte le scatole presenti hanno la stessa larghezza in modo da adattarsi perfettamente al nastro trasportatore.
Sfida
Dato un elenco di regali rappresentati dalle loro dimensioni, emettere un nastro trasportatore con tutti i regali.
Un regalo viene disegnato in questo modo:
+----+
/ /|
+----+ |
| | +
| |/
+----+
Questo regalo ha larghezza 1, altezza 2 e lunghezza 4. Nota che i segni più non contano per la lunghezza laterale, quindi un regalo con lunghezza 4 si estende su 6 posizioni.
Tutti i regali sono disegnati uno accanto all'altro con uno spazio tra i due personaggi più vicini; vale a dire, gli angoli in basso a sinistra dei presenti sono distanziati in modo tale che se una casella presente ha lunghezza le larghezza w, l'angolo in basso a sinistra della casella attuale successiva sarà esattamente in l + w + 4posizione a destra dell'angolo in basso a sinistra della casella precedente.
Dopo che tutte le caselle presenti sono state disegnate, il nastro trasportatore viene disegnato sostituendo lo spazio tra le caselle su ciascuna delle ultime width + 2linee con caratteri di sottolineatura.
L'output finale per le caselle attuali con (l, w, h)of [(4, 1, 2), (8, 1, 3), (1, 1, 1)]sarebbe:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
Specifiche di formattazione
Puoi scegliere di prendere un elenco di 3 tuple in cui uno degli elementi è coerente in tutto l'elenco (che sarebbe la larghezza), oppure puoi prendere la larghezza attuale e quindi un elenco di 2 tuple che rappresentano la lunghezza e altezza di ogni regalo. Puoi prendere gli input in qualsiasi ordine e in qualsiasi formato ragionevole, ma i regali devono essere visualizzati nello stesso ordine in cui sono dati come input.
Puoi scegliere qualsiasi formato di output ragionevole per l'arte ASCII (incluso il ritorno da una funzione).
Casi test
Questi casi di test sono forniti come [(l, w, h), ...]formato.
[(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)
++
//|
// |
// |
++ |
|| |
|| |
|| |
+--------+ || |
/ /+_|| +
/ //__|| /
/ //___|| /
+--------+/____||/
+--------+_____++
Regole
- Si applicano scappatoie standard
- Questo è code-golf , quindi vince la risposta più breve in byte
- Nessuna risposta sarà accettata
Nota: ho tratto ispirazione per questa serie di sfide da Advent Of Code . Non ho alcuna affiliazione con questo sito
Puoi vedere un elenco di tutte le sfide della serie guardando la sezione "Linked" della prima sfida qui .