La sfida
Il programma o la funzione accetterà un singolo input di stringa da STDIN o un parametro di funzione. Si può presumere che l'input conterrà solo caratteri alfabetici (a-zA-Z), spazi e stop completi. L'input non fa distinzione tra maiuscole e minuscole, quindi dovresti trattare "a" esattamente come tratteresti "A".
Per ogni carattere nella stringa, verrà emessa una rappresentazione di un edificio secondo le seguenti specifiche.
Ogni edificio deve avere un tetto, indicato da un carattere di sottolineatura nella riga superiore, quindi da una barra, spazio, barra rovesciata nella seconda riga.
_
/ \
Avrai quindi un numero di piani, corrispondenti al numero di lettera (a = 1, b = 2, c = 3 ecc.) Che sono rappresentati da un muro (|) su ciascun lato e uno spazio nel mezzo. Il piano inferiore (e solo il piano inferiore) dovrebbe avere una fondazione, che è un carattere di sottolineatura tra le pareti. Come questo...
|_|
Ad esempio, "b" sarebbe simile a questo
_
/ \
| |
|_|
Ora sappiamo che edifici molto alti e stretti non possono sopportare e devono allargarsi alla base, quindi nessun edificio può superare i tre piani senza un supporto aggiuntivo. Quindi ogni tre livelli (non meno) dovresti aggiungere un 'livello di ampliamento'. Lo strato allargato è costituito da una barra e una barra rovesciata direttamente sopra le pareti della sezione sottostante e la sezione sottostante dovrebbe essere due spazi più ampia della sezione sopra. Il livello aggiuntivo non conta per l'altezza dell'edificio.
Gli edifici non devono sovrapporsi ma non devono avere spazi non necessari tra loro e il terreno è sempre piatto, quindi tutti gli edifici dovrebbero avere la loro base allo stesso livello.
Ad esempio, "abcdefga" sarà simile a questo.
_
/ \
_ | |
_ / \ | |
_ / \ | | | |
/ \ | | | | / \
_ | | | | | | | |
_ / \ | | | | / \ | |
_ / \| | | | / \| | | | _
/ \| || |/ \| || |/ \/ \
|_||_||_||___||___||___||_____||_|
Gli spazi nell'input della stringa devono essere rappresentati da un doppio spazio.
I punti di arresto completi nell'input della stringa devono essere rappresentati da macerie in questo modo.
/\/\
Ulteriori esempi
Input = Hello world.
Uscita =
_
/ \
| |
| |
| |
/ \
| |
| | _
| | / \
/ \ | |
| | | |
_ | | _ | |
/ \ | | / \ / \
| | / \ | | | |
| | | | | | | |
_ _ | | | | | | | | _
/ \ / \ / \ | | / \ / \ / \
| | | | | | / \ | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
_ / \ / \ / \ | | / \ / \ / \
/ \ | | | | | | / \ | | | | | |
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
| | _ / \ / \ / \ | | / \ / \ / \
/ \ / \ | | | | | | / \ | | | | | | _
| | | | | | | | | | | | | | | | | | / \
| | | | | | | | | | | | | | | | | | | |
| | | | / \/ \/ \ | | / \/ \/ \ | |
/ \/ \| || || | / \| || || | | |
| || || || || | | || || || |/ \
|_____||___||_______||_______||_________| |_______________||_________||___________||_______||___|/\/\
Input = lorem ipsum
_
/ \
_ | |
/ \ | |
_ | | | |
/ \ | | / \
| | _ | | | |
| | / \ / \ | |
_ | | | | | | | |
/ \ / \ | | | | / \
| | | | _ | | | | | | _
| | | | / \ / \ / \ | | / \
_ | | | | | | | | | | | | | |
/ \ / \ / \ | | | | | | / \ | |
| | | | | | | | | | | | | | | |
| | | | | | / \ / \ / \ | | / \
| | | | | | | | _ | | | | | | | |
/ \ / \ / \ | | / \ | | | | / \ | |
| | | | | | | | | | | | | | | | | |
| | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | |
/ \ / \ / \ _ | | / \ | | | | / \ | |
| | | | | | / \ | | | | | | | | | | | |
| | | | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | | | |
/ \/ \/ \ | | | | / \ | | | | / \ | |
| || || |/ \ | | | | | | | | | | | |
| || || || |/ \ | |/ \/ \| |/ \
|_______||_________||___________||___||_________| |_____||___________||_____________||_____________||_________|
Input = a.a.a.x.x.x.a.a.a
_ _ _
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
_ _ _ | | | | | | _ _ _
/ \ / \ / \ | | | | | | / \ / \ / \
|_|/\/\|_|/\/\|_|/\/\|_______________|/\/\|_______________|/\/\|_______________|/\/\|_|/\/\|_|/\/\|_|
Regole
- Naturalmente questo è il codice golf, il punteggio più basso in byte vince
- Si applicano le regole standard per le scappatoie
- È consentito qualsiasi numero di righe vuote aggiuntive prima o dopo l'output
- È possibile scegliere di produrre l'intero risultato in una stringa o offrire l'output come un array in cui ogni elemento rappresenta una riga di output oppure inviare a STDOUT
Nota
Questo è il mio primo post su PPCG, quindi per favore andate piano con me. È stato attraverso la sandbox. Eventuali punti negativi o possibili miglioramenti si prega di pubblicare come commento e farò quello che posso
[a,z]
, [1.26]
parti della Mego menzionati. Avere facoltativo è spesso il migliore (a meno che non sia una parte fondamentale della sfida (non è qui).
[a,z]
e[A,Z]
per[1,26]
sembra un requisito inutile. Sarebbe molto meglio usare un intero elenco come input (essendo0
l'input per le macerie). Inoltre, pubblicare la tua sfida dopo essere stata nella Sandbox per sole 21 ore , senza aspettare di ottenere voti o feedback da più di un utente, non conta come "passata attraverso la sandbox". Si consiglia di lasciare le sfide nella Sandbox per almeno 48-72 ore, per dare alle persone un sacco di tempo per esaminarle.