Se dispara una bala de cañón de modo que en el primer parpadeo de su vuelo asciende por las N
copas de los árboles, durante el segundo parpadeo por las N-1
copas de los árboles, etc., hasta que alcanza el punto más alto de su trayectoria. Luego comienza a caer en 1, 2, etc., copas de los árboles por parpadeo hasta que toca el suelo. Al mismo tiempo, la bala de cañón se mueve horizontalmente con una velocidad constante de 1 copa de árbol / parpadeo.
Su tarea es dibujar la trayectoria con letras consecutivas del alfabeto inglés. Si te quedas sin letras, comienza de nuevo desde 'A'
. Escribe una función o un programa. La entrada es un entero N
( 1≤N≤15
). La salida puede ser una matriz de caracteres en cualquier forma razonable, por ejemplo, una cadena separada por una nueva línea o una lista de cadenas. Las letras pueden ser todas minúsculas o mayúsculas. Se permiten espacios iniciales y finales adicionales. Las lagunas estándar están prohibidas. Un código más corto es mejor.
in:
5
out:
OP
N Q
M R
L S
K T
J U
I V
H W
G X
F Y
E Z
D A
C B
B C
A D
in:
1
out:
AB
O
yP
, la marca va 1 a la derecha, pero 0 hacia arriba o hacia abajo.Respuestas:
05AB1E ,
33322928 bytesPruébalo en línea!
Explicación
fuente
Nú»
algo así podría usarse para imprimir sobre la marcha en lugar de])~.c
Stax ,
2924 bytesEjecútelo y depúrelo en línea
La correspondiente representación ASCII del mismo programa es el siguiente.
fuente
R,
169,163,161,153,150,110,109 bytesEste enfoque completa una matriz y luego imprime la matriz.
Golfed
Gracias @Giuseppe por 153.
Gracias @JDL por 150.
Vea el comentario de @ Giuseppe para 112, y algunas ediciones para 110 ahora 109. Rasgue el código original.
Si traza una salida válida, entonces 73 bytes
fuente
Map
lugar demapply
?lapply
lugar demapply
. Gracias por 150row,column
pares directamente en[
lugar de tener que pasar pormapply
(oMap
), así que encontré una manera de hacerlo. ¡También recordé quewrite
existe y puede reemplazarcat
por 112 bytes !Python 2 ,
140135133 bytesPruébalo en línea!
fuente
MATL , 29 bytes
Pruébalo en línea!
Cómo funciona
fuente
Java (OpenJDK 8) , 121 bytes
Pruébalo en línea!
Explicación
fuente
C, 184 bytes
Pruébalo en línea!
Desenrollado:
fuente
main
para compilarlo. En TIO, elmain
está en la sección de pie de página.Clojure,
417319 bytesEn algún momento me enredé en
reverse
llamadas y renuncié a la idea de hacerlo lo más breve posible. Solo quería tener una solución de trabajo. Aqui tienes...Una especie de no golfista
Actualizar
Motivado por el comentario de Olivier, logré cortar varias
reverse
llamadas y aplicar algunos trucos generales de golf para cortar personajes. También creé alias parareverse
,map-indexed
,concat
,repeat
ystr
porque he usado varias veces cada uno.Sin golf
Crea la función
c
que acepta el valor n y devuelve una lista de líneas.fuente
Carbón ,
3331 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: Guardado 2 bytes gracias a @ ASCII-only. Explicación:
Inicialice la letra actual como índice en el alfabeto en mayúscula a 0.
Haga un bucle desde la negación de la entrada hasta la entrada inclusive.
Normalmente cada columna está a la derecha de la anterior. Sin embargo, no hay columna para cero. En cambio, se necesita una corrección para garantizar que los lados izquierdo y derecho se alineen.
Bucle para cada letra en la columna.
Imprime la carta actual.
Incrementa el índice de letras.
Mover hacia arriba o hacia abajo dependiendo de qué lado de la trayectoria estemos.
fuente
Perl 5 , -n
112929088 bytesPor una vez, el terriblemente largo
printf
parece ganar.Pruébalo en línea!
fuente
(A..Z)x9
al trabajo, ¡pero era demasiado corto para el límite! Tenía eso solo por 91. :)Python3 + numpy,
124115Esto crea una matriz de tamaño apropiado, encuentra los índices para la trayectoria y les asigna el carácter apropiado.
La parte más compleja es generar los caracteres AZ, que se basan en un elenco de números muy hack para un tipo de cadena.El objeto devuelto es una matriz unicode.Editar : se guardaron 9 bytes reemplazando el código numpy que generó los caracteres AZ (
(r_[0:2*N]%26+65).view('U1')[::2]
)map
, como se sugiere aquí .fuente
Python 3 ,
139136 bytesPruébalo en línea!
Genera cada capa de forma recursiva, dado el tamaño y el desplazamiento.
-3 bytes gracias a Jo King
fuente
~
operador!n and ... or''
an*' 'and ...
por otro byteJ ,
7875 bytesPruébalo en línea!
-3 gracias a ngn
fuente
(,|.)@i.@-
->i.@-,i.
Python 2 , 182 bytes
Pruébalo en línea!
Devuelve la lista de listas de caracteres. Verificación primitiva aquí
fuente
Jalea , 35 bytes
Pruébalo en línea!
fuente
Yabasic , 125 bytes
Una solución básica que utiliza el modo gráfico para imprimir los caracteres en la columna y fila correcta de la pantalla.
Debido a que esta solución utiliza el modo gráfico, no se puede ejecutar en TIO.
Salida
A continuación se muestra la salida para entrada
7
fuente
Ruby ,
106103bytesPruébalo en línea!
fuente
QBasic 1.1 , 124 bytes
fuente
Python 3 , 190 bytes
Pruébalo en línea!
Hice lo mejor que pude. Avíseme si hay alguna optimización posible.
fuente
k4,
7671 bytesalgunas reorganizaciones + asignaciones para guardar 5 bytes
esfuerzo de media hora con algo de esfuerzo para reducir algunos bytes, pero probablemente hay mucho más que se puede hacer aquí. volveremos a eso. desafío divertido!
fuente