Questa competizione è finita. Grazie per le interessanti voci non esolang e complimenti a Jakuje per la sua vincente presentazione JavaScript.
Nella grande tradizione di ASCII Art Challenges su questo sito, eccone un'altra. Dato un input, disegna una spirale.
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Semplice? Heh, heh, heh ... Sì ...
(Ispirato al post ASCII Dragons Curve e ai post ASCII Art of the Day di Optimizer )
Ingresso
L'input sarà sotto forma di una serie di parametri, presi dal solito argomento STDIN / funzione / ecc., Qualunque sia il tuo equivalente linguistico, composto da quattro parti. Queste parti possono essere quattro argomenti separati, una quadrupla, una matrice di dimensioni 4, ecc. Per semplicità e coerenza durante la sfida, rappresenterò l'input come una sola parola.
- Un numero intero
2 ≤ x ≤ 20che specifica la dimensione della spirale in termini di "quadrati" con ciascun carattere stampato che rappresenta un "quadrato" di dimensioni. Teoricamente questo potrebbe essere di portata enorme, ma dato che stiamo disegnando l'arte ASCII, un limite superiore sicuro su questo sarà 20 in modo che si adatti in modo discreto sullo schermo. - Una singola lettera di
d u rol, che indica il movimento iniziale dal "quadrato" iniziale (giù, su, destra, sinistra). - Un facoltativo
c, che indica "in senso antiorario". Secviene omesso, assumere la rotazione in senso orario per la spirale. - Un numero intero finale
1 ≤ y ≤ 10che specifica quante volte ricorrere al disegno a spirale, usando il "quadrato" di finitura della spirale precedente come "quadrato" iniziale di quello nuovo. Sto scegliendo un limite superiore di 10 perché voglio che il disegno finisca ad un certo punto. - Alcuni input di esempio:
20lc513d22rc1
È interessante notare che i valori dispari per l'immissione della dimensione comporteranno @sempre il centro esatto di una spirale, ma i valori pari potrebbero avere l'offset "quadrato" iniziale in una qualsiasi delle quattro direzioni diagonali, a seconda della direzione iniziale viaggio. Ciò può comportare alcuni modelli ... interessanti ... Vedi i due esempi pari di seguito.
L'input che non segue le specifiche di input (ad es. 11q#s) È indefinito e mi aspetto che il programma funzioni correttamente. :)
Produzione
L'output è un output stampabile ASCII tramite STDOUT equivalente in una lingua, con le seguenti specifiche:
- Il "quadrato" iniziale (di ciascuna ricorsione) deve essere contrassegnato da un segno
@. - Il "quadrato" finale deve essere contrassegnato da una e commerciale
&. In caso di ricorsioni multiple, dovrebbe essere marcato solo il "quadrato" definitivo&. - Gli angoli del percorso a spirale devono "puntare" nella direzione di marcia, usando
< > v ^. - La corsa verticale deve essere disegnata da tubi
|. - La corsa orizzontale deve essere disegnata con trattini
-. - I "quadrati" che vengono sovrascritti da successive ricorsioni dovrebbero mostrare la direzione di viaggio più recente. Ciò si tradurrà in ricorsioni "più recenti" che sembrano essere sovrapposte a ricorsioni "più vecchie". Vedi l'
4rc3esempio sotto. - Un'ultima riga finale finale è OK, gli spazi iniziali potrebbero essere un must e quindi sono consentiti, ma gli spazi finali non sono consentiti.
- Non ti attraccherò se usi sequenze di escape per disegnare l'arte ASCII andando su STDOUT, ma rimarrò silenziosamente deluso da te. (Avrai comunque diritto alla taglia se li usi)
Esempi
2d4 = diametro di 2, inizia scendendo, in senso orario, 4 ricorsioni
&@@@@
^<<<<
In questo esempio, il disegno inizia in alto a destra @, scende in basso, uno a sinistra, uno in alto. A questo punto, abbiamo terminato la 2dporzione, quindi iniziamo la seconda ricorsione, quindi ne abbiamo un'altra @, una giù, una sinistra, una su; quindi la 3a ricorsione; quindi il 4 ° e infine il nostro &.
4rc3 = diametro di 4, inizia andando a destra, in senso antiorario, 3 ricorsioni
&--<
v-<|
|@^|<
>--^|
|@^|<
>--^|
|@^|
>--^
In questo esempio, il disegno inizia nella parte inferiore @, va a destra uno, uno in alto, a spirale attorno, fino a quando non raggiunge il centro @e termina la 4rcporzione. Questo quindi si ripete altre due volte per ottenere le 3 ricorsioni richieste. Si noti che 4rc1sarebbe solo il blocco 4x4 in alto a sinistra di questo esempio.
7u1 = diametro di 7, inizia salendo, in senso orario, 1 ricorsione (nota che è lo stesso dell'intro)
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Vincere e restrizioni
Questo è Code Golf, quindi vince la risposta più piccola in byte. Gli invii devono essere nella solita forma di programma / funzione / CJam Code Block / ecc. Si applicano restrizioni standard sulle scappatoie. Autista professionista su percorso chiuso. Se l'irritazione persiste, interrompere l'uso e consultare il medico.