Mira la siguiente cadena. ¿Ves un patrón?
ABEFNOPEFGH DC GQI MHRJ LKJI SK DTL SEMEN BAZYXWV N EO DP CQ BAZYXWVUTSR
Como algunos habrán notado, es básicamente una espiral del alfabeto, donde las distancias entre filas / columnas aumentan gradualmente en 1 espacio / nueva línea.
Definición rigurosa
- Tengamos un contador c , que inicialmente es 0.
- Escribimos la primera c + 1 letras del alfabeto, de izquierda a derecha:
A
. Entonces, de arriba a abajo la siguiente (c + 1) (c + 2) / 2 cartas (ADD
B
):AB
.De izquierda a derecha, el siguiente (c + 1) (c + 2) / 2 (agregar
C
):AB C
Y de abajo hacia arriba, las siguientes letras c + 1 (agregar
D
):AB DC
Alcanzado el final del ciclo. Por lo tanto, incrementemos c (que se convierte en 1). Luego, comienza desde el primer paso, la única diferencia es que en lugar de usar las primeras letras c + 1 del alfabeto, usamos las siguientes c + 1 letras , comenzando desde el último elemento de este ciclo (
D
en este caso, entonces continuamos conEFG...
). CuandoZ
se alcanza, retrocede desdeA
.
Tarea
Dado un número entero N (que es positivo para la indexación 1 o no negativo para la indexación 0), genera los primeros N ciclos de la espiral.
Reglas
Puede usar el alfabeto en minúsculas o mayúsculas, pero su elección debe ser coherente (solo use uno de ellos, no se permite mezclar).
Puede tomar entradas y proporcionar salidas a través de cualquiera de los métodos estándar , en cualquier lenguaje de programación , mientras observa que estas lagunas están prohibidas de manera predeterminada.
Formatos de salida aceptables: cadena multilínea, una lista de cadenas que representan líneas, una lista que contiene múltiples listas de caracteres, cada una representando una línea, o cualquier otra cosa que considere adecuada. En caso de que no elija el primer formato, sería bueno incluir una versión bonita de su código.
Este es el código de golf , por lo que gana el código más corto en bytes (en cada idioma) que cumpla con los requisitos.
Casos de prueba
El entero de entrada se separará por su salida correspondiente a través de una nueva línea, y las pruebas se separarán con guiones. Tenga en cuenta que estos están indexados en 1.
1 AB corriente continua -------- 2 ABEF DC G MH LKJI -------- 3 ABEFNOP DC GQ MHR LKJI S DT CU BAZYXWV ------- 4 4 ABEFNOPEFGH DC GQI MHRJ LKJI SK DTL SEMEN BAZYXWV N EO DP CQ BAZYXWVUTSR ------- 5 5 ABEFNOPEFGHFGHIJ DC GQIK MHRJL LKJI SKM DTLN CUMO BAZYXWV NP EOQ DPR CQS BAZYXWVUTSR T RU QV PW BUEY NMLKJIHGFEDCBAZY ------ 6 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