La tarea es muy simple, cuando se le da una entrada, genera una de las siguientes espirales:
Input = 1
da una espiral con la letra que A
comienza en la esquina superior izquierda:
A B C D E F
T U V W X G
S 5 6 7 Y H
R 4 9 8 Z I
Q 3 2 1 0 J
P O N M L K
Input = 2
da una espiral con la letra que A
comienza en la esquina superior derecha:
P Q R S T A
O 3 4 5 U B
N 2 9 6 V C
M 1 8 7 W D
L 0 Z Y X E
K J I H G F
Input = 3
da una espiral con la letra que A
comienza en la esquina inferior derecha:
K L M N O P
J 0 1 2 3 Q
I Z 8 9 4 R
H Y 7 6 5 S
G X W V U T
F E D C B A
Input = 4
da una espiral con la letra que A
comienza en la esquina inferior izquierda:
F G H I J K
E X Y Z 0 L
D W 7 8 1 M
C V 6 9 2 N
B U 5 4 3 O
A T S R Q P
Como puede ver, la espiral siempre va en sentido horario y se mueve desde afuera hacia adentro .
Las reglas son simples:
- Debe proporcionar un programa completo utilizando STDIN y STDOUT, o el equivalente más cercano si no es posible.
- Dada una entrada (
1, 2, 3, 4
), da salida a la espiral relacionada. - Se permiten espacios en blanco al final
- Se permiten espacios en blanco iniciales cuando se usan de manera consistente
- Debe usar letras mayúsculas para la salida, no se permiten letras minúsculas.
- Este es el código de golf , por lo que gana el programa con la menor cantidad de bytes.
Respuestas:
CJam,
454342 bytesPruébalo aquí.
Explicación
fuente
Japt , 53 bytes
58 59 60Guardado 5 bytes gracias a @ETHproductions
Esto usa el comando rotar que nunca pensé que sería tan útil
Explicación && Ungolfed
Pruébalo en línea
fuente
"FGHIJK EXYZ0L DW781M CV692N BU543O ATSRQP"¸zU ®¬¸} ·
Mathematica 156 bytes
Convierte una cadena inicial de letras,,
"ABCDEFTUVWXGS567YHR498ZIQ3210JPONMLK"
en una matriz.Nest
se aplicaf
a losn-1
tiempos de esa matriz , donde n es el número de entrada.f
funciona haciendoTranspose
-ing la matriz seguida deReverse
aplicada a cada fila.g
convierte la matriz final en una cadena.Ejemplo
Si la salida pudiera darse como una matriz, la función
g
sería innecesaria.fuente
MATLAB,
6189 bytesVeré si puedo bajarlo un poco. Aunque no estoy seguro.
Esto crea una matriz de todas las letras de la A a la Z seguidas de 0 a 9, luego toma una espiral y la usa para organizar los datos en el orden correcto. La matriz se gira según la cantidad que especifica el usuario y luego se imprime.
El resultado utiliza constantemente espacios iniciales según lo permitido por la pregunta (de hecho, sin costo adicional de bytes, podría hacer espacios finales en su lugar). Aquí hay un ejemplo:
Como vi que se requieren espacios, este código original (para 61) no es válido porque no agrega un espacio entre cada carácter. Pero lo agregaré aquí como referencia.
y produce:
fuente
JavaScript ES6, 165
172Rotación simple, comenzando desde una cadena codificada
Nota 1 byte guardado thx @ user81655
Fragmento de prueba:
fuente
`<newline>`
es un byte más corto que`\n`
.Pyth - 60 bytes
Codifica la cadena y usa operaciones matriciales para obtener todas las opciones.
Test Suite .
fuente
+<G6"
en lugar de"ABCDEF
guardar 2 bytes.Rubí, 173 bytes
Sin golf:
Uso:
fuente
Python, 152 bytes
fuente