Questa sfida è ispirata da questa risposta al Ask Stack Ubuntu Exchange.
Intro
Ricordi lo screensaver di Windows ME con le pipe ? È ora di riportare la nostalgia!
Sfida
Dovresti scrivere un programma o una funzione che genererà una rappresentazione ASCII dello screensaver. Nello screensaver dovrebbe esserci un singolo tubo che crescerà in direzioni semi-casuali.
L'inizio del tubo verrà posizionato casualmente su uno qualsiasi dei bordi dello schermo e il pezzo di tubo dovrebbe essere perpendicolare al bordo (i primi tubi angolari possono essere orizzontali o verticali). Ogni segno di spunta il tubo crescerà nella direzione in cui è rivolto (orizzontale / verticale) per 80%caso o in un angolo per 20%caso.
Rappresentazione di tubi
Per creare la pipe, verranno utilizzati 6 caratteri unicode
─ \u2500 horizontal pipe
│ \u2502 vertical pipe
┌ \u250C upper left corner pipe
┐ \u2510 upper right corner pipe
└ \u2514 lower left corner pipe
┘ \u2518 lower right corner pipe
Ingresso
Il programma / funzione prenderà 3 valori di input, che possono essere raccolti attraverso i parametri della funzione o richiesti all'utente.
- Quantità di zecche
- Larghezza dello schermo
- Altezza dello schermo
Quantità di zecche
Per ogni segno di spunta, un pezzo di tubo verrà aggiunto allo schermo. I tubi sovrascriveranno i vecchi pezzi di tubo se si generano nella stessa posizione.
Ad esempio, prendi uno schermo di dimensioni 3x3
ticks == 3
─┐
┘
ticks == 4
─┐
└┘
ticks == 5
│┐
└┘
Ogni volta che una pipe esce dallo schermo, come nell'ultimo esempio con 5 tick, allora una nuova pipe si genererà su un bordo casuale. Per esempio:
ticks == 6
│┐
└┘
─
Il nuovo tubo dovrebbe avere il 50% di probabilità di essere orizzontale o verticale.
Larghezza / altezza dello schermo
La larghezza e l'altezza dello schermo possono essere combinate in un unico valore se è preferibile nella tua lingua preferita. La larghezza e l'altezza dello schermo avranno sempre un valore minimo di 1 e un valore massimo di 255. Se la tua lingua preferita supporta una console o uno schermo di output che è più piccolo di una griglia di 255x255 caratteri, puoi supporre che la larghezza e l'altezza siano non superare mai i confini della tua console. (Esempio: finestra cmd 80x25 di Windows)
Produzione
L'output del programma / funzione deve essere stampato sullo schermo o restituito da una funzione. Per ogni esecuzione del programma, dovrebbe essere generato un diverso set di pipe.
Casi test
I seguenti casi di test sono tutti esempi casuali di output validi
f(4, 3, 3)
│
─┘
│
f(5, 3, 3)
│
─┘┌
│
f(6, 3, 3)
─│
─┘┌
│
f(7, 3, 3)
──
─┘┌
│
Ovviamente, più segni di spunta si sono verificati, più diventa difficile dimostrare la validità del programma. Pertanto, è preferibile pubblicare un gif dell'output in esecuzione. Se ciò non è possibile, si prega di pubblicare una versione del codice che includa la stampa dell'output. Ovviamente, questo non conta per il tuo punteggio.
Regole
- Questo è code-golf , vince il minor numero di byte
- Si applicano scappatoie standard
- Se usi i caratteri di pipe unicode nel tuo codice sorgente, puoi contarli come un singolo byte
Questa è una sfida piuttosto difficile che può essere risolta in molti modi creativi, sei incoraggiato a scrivere una risposta in un linguaggio più dettagliato anche se ci sono già risposte in brevi termini. Questo creerà un catalogo delle risposte più brevi per lingua. Voti bonus per gif colorate fantasia;)
Buon golf!
Disclaimer: sono consapevole che i caratteri Unicode non sono ASCII, ma in mancanza di un nome migliore lo chiamo solo arte ASCII. I suggerimenti sono benvenuti :)



