È presto il compleanno del mio amico e dato che è un programmatore e amante dell'arte ASCII, ho pensato di fargli un po 'di torta ASCII!
Purtroppo, continuo a dimenticare la sua età attuale, quindi vorrei avere un programma per il mio forno ASCII, che cuoce una torta con un determinato numero di candele, quindi non devo rifarlo da solo se sbaglio con il suo età.
I forni ASCII hanno solo capacità di memoria e archiviazione limitate, quindi dovrebbero usare il minor numero di byte possibile .
Il tuo compito:
Scrivi un programma che genera una torta di compleanno sulla console, con tutte le candele specificate dall'input.
I requisiti della torta sono:
- Deve avere un bordo, costituito da linee orizzontali
-e verticali|e vertici+. - Almeno 5 caratteri (incluso il bordo della torta
|) - Almeno 5 caratteri (incluso il bordo della torta
-) - Ci deve essere un carattere di spazio
tra il bordo della torta e la prima base di candela (non la fiamma), su ciascun lato, tranne se c'è una fiamma in quello spazio. Una fiamma o una base di candela non dovrebbe essere in grado di sovrapporre i bordi della torta. - La larghezza massima della torta è di 9 caratteri, quindi ci sono un massimo di 5 candele per riga.
- Dal momento che non vogliamo che la nostra torta sia bidimensionale, deve essere alta 2 file in più, per dargli un po 'di volume. Aggiungi un altro bordo in basso e collega i vertici con quelli sopra di loro, usando nuovamente i caratteri ASCII dall'alto (
-,|e+).
I requisiti della candela sono:
- È costituito dalla base
|e dalla fiamma*, con la fiamma accatastata sopra la base. - Le candele non possono essere direttamente adiacenti l'una all'altra, tranne in diagonale.
- Le candele vengono posizionate da sinistra a destra, quindi dall'alto verso il basso, con un massimo di 5 in una riga.
(Nota: se ci fossero 5 candele nella riga precedente, la riga successiva non può avere anche 5 candele, da allora sarebbero adiacenti.)
Note aggiuntive:
- La larghezza della torta dipende dal numero di candele nella prima riga, ma deve contenere almeno 5 caratteri e una larghezza massima di 9 caratteri.
- Le candele vengono riempite a partire dalla riga più in alto, andando da sinistra a destra. Una volta una riga, se piena, la successiva dovrebbe iniziare nella riga sotto la prima.
Ingresso:
Puoi accettare un numero nel formato (ragionevole) che ti piace.
Per questa sfida puoi supporre che il numero sia compreso tra 0 e 2 31 (escluso 0), anche se non riconosco qualcuno che è così vecchio.
Produzione:
È possibile restituire una stringa o scrivere direttamente la torta risultante nella console di output.
Regole:
- Sono vietate le scappatoie standard .
- Questo è code-golf , quindi vince il codice più breve in byte, in qualsiasi lingua.
Esempi:
Ingresso: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Ingresso: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
Ingresso: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
In bocca al lupo!