Guarda la seguente stringa. Notare uno schema?
ABEFNOPEFGH DC GQI MHRJ LKJI SK DTL CUM BAZYXWV N EO DP CQ BAZYXWVUTSR
Come alcuni potrebbero aver notato, è fondamentalmente una spirale dell'alfabeto, in cui le distanze tra righe / colonne aumentano gradualmente di 1 spazio / newline.
Definizione rigorosa
- Diamo un contatore c , che inizialmente è 0.
- Scriviamo la prima c + 1 lettere dell'alfabeto da sinistra a destra:
A
. Poi, dall'alto verso il basso il prossimo (c + 1) (c + 2) / 2 lettere (add
B
):AB
.Da sinistra a destra, il prossimo (c + 1) (c + 2) / 2 (aggiungi
C
):AB C
E dal basso verso l'alto, le successive c + 1 lettere (aggiungi
D
):AB DC
Raggiunta la fine del ciclo. Quindi, incrementiamo c (che diventa 1). Quindi, inizia dal primo passaggio, l'unica differenza è che invece di usare le prime lettere dell'alfabeto c + 1 , usiamo le lettere successive c + 1 , a partire dall'ultimo elemento di questo ciclo (
D
in questo caso, quindi continuiamo conEFG...
). QuandoZ
viene raggiunto, ritorna daA
.
Compito
Dato un numero intero N (che è positivo per 1-indicizzazione o non negativo per 0-indicizzazione), emette i primi N cicli della spirale.
Regole
Puoi usare l'alfabeto minuscolo o maiuscolo, ma la tua scelta deve essere coerente (usane solo uno, il mixaggio non è permesso).
Puoi prendere input e fornire output attraverso uno qualsiasi dei metodi standard , in qualsiasi linguaggio di programmazione , osservando che queste scappatoie sono proibite per impostazione predefinita.
Formati di output accettabili: stringa multilinea, un elenco di stringhe che rappresentano linee, un elenco contenente più elenchi di caratteri, ognuno dei quali rappresenta una riga o qualsiasi altra cosa ritenga appropriata. Nel caso in cui non si scelga il primo formato, sarebbe bello includere una versione stampata del proprio codice.
Questo è code-golf , quindi vince il codice più breve in byte (in ogni lingua) che soddisfa i requisiti!
Casi test
L'intero di input verrà separato dall'output corrispondente tramite una nuova riga e i test verranno separati mediante trattini. Si noti che questi sono 1 indicizzati.
1 AB DC -------- 2 ABEF DC G MH LKJI -------- 3 ABEFNOP DC GQ MHR LKJI S DT CU BAZYXWV ------- 4 ABEFNOPEFGH DC GQI MHRJ LKJI SK DTL CUM BAZYXWV N EO DP CQ BAZYXWVUTSR ------- 5 ABEFNOPEFGHFGHIJ DC GQIK MHRJL LKJI SKM DTLN CUMO BAZYXWV NP EOQ DPR CQS BAZYXWVUTSR T RU QV PW BUE NMLKJIHGFEDCBAZY ------ 6 ABEFNOPEFGHFGHIJSTUVWX DC GQIKY MHRJLZ LKJI SKMA DTLNB CUMOC BAZYXWV NPD EOQE DPRF CQSG BAZYXWVUTSR TH RUI QVJ PWK OXL NMLKJIHGFEDCBAZY M SN RO QP PQ O NMLKJIHGFEDCBAZYXWVUTS