Sin ninguna entrada, su tarea es generar lo siguiente:
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
No visualmente, su tarea es generar cada letra en el alfabeto, con espacios antes de que sea igual a su posición en el alfabeto menos uno.
Si imprime esto, debe aparecer como el anterior. Se permite un espacio en blanco extraño que no afecta la apariencia, así como una nueva línea final. Puede usar todas las minúsculas o todas las mayúsculas.
También puede devolver esto desde una función según las reglas habituales, ya sea como una cadena con nuevas líneas o como una lista de cadenas.
Este es el código de golf , ¡así que la respuesta más corta en bytes gana!
code-golf
kolmogorov-complexity
alphabet
Stephen
fuente
fuente
a<VERTICAL-TAB>b<VERTICAL-TAB>c...
? ¿Qué tal si también hay algunos caracteres de retroceso allí? ¿Mientras el resultado visual sea el mismo?4
espacios antes delb
, no se verá muy diagonal. Si parece que la pendiente es ~-1
entonces está bien.Respuestas:
Carbón , 2 bytes
Pruébalo en línea!
¿Cómo?
Exactamente el tipo de desafío para el que se diseñó originalmente el carbón.
fuente
↘"abc ... xyz"q
que sería el programa de trabajo más corto. (¡ Pruébelo en línea! )↘``26O;)q
Debería funcionar (comience con una marca de retroceso; para cada I en 0 ... 25, haga estallar la I implícita, incremente la marca de retroceso y la salida), pero arroja un error de "pila vacía" por alguna razón. .C, 45 bytes
¡Gracias a @Dennis por guardar 5 bytes!
fuente
i
en algún momento. Al menos en TIO,f()
solo funciona una vez .f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}
Guarda algunos bytes.f(i){for(i=96;i<122;)printf("%c\v",++i);}
para 41 bytes - asegúrese de ejecutar esto en un terminal real (sí, esto está permitido )05AB1E ,
1486 bytes-2 bytes gracias a @Emigna
Cómo funciona
Pruébalo en línea!
Versión original, 14 bytes.
fuente
AvyNú»
.ƶ
parece tan perfecto, pero no es :(.Λ
probablemente aún no estaba disponible en ese momento, pero26A3Λ
guarda un byte.₂A3Λ
habría sido aún más corto.JavaScript (ES6),
6059 bytesUna función recursiva que devuelve una cadena con una nueva línea final.
fuente
n.toString(++n)+f(n)
es un byte más corto quen.toString(36)+f(n+1)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""
por 55."".padEnd(n-10)+n.toString(++n)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):s
parece ser permisible.Rubí , 28 bytes.
Pruébalo en línea!
Explicación:
El operador << en una cadena en Ruby hace el truco, como se explica en la Documentación
str << entero → str
str << obj → str
Agregar: concatena el objeto dado a str. Si el objeto es un entero, se considera como un punto de código y se convierte en un carácter antes de la concatenación.
fuente
R,
383736 bytes(El uso de
write
está inspirado en la respuesta de @ Giuseppe ).fuente
1
lugar de""
afeitarse otro byte.Vim, 29 bytes
Pruébalo en línea!
↵ significa presionar la tecla de retorno
<Esc> significa presionar la tecla de escape
¿Como funciona esto?
fuente
+
explicación que me arrojó por un segundo.␛
lugar de<Esc>
. Se ve un poco mejor en mi opinión.{
lugar degg
Python 2 , 36 bytes
Esto aprovecha el espacio en blanco extraño que no afecta a la regla de apariencia .
Pruébalo en línea!
Versión alternativa, 38 bytes.
Esto produce el resultado exacto de la especificación de desafío.
Pruébalo en línea!
fuente
%*c
incluso?%*<identifier>
toma dos argumentos: la longitud para rellenarlo y la cosa real para sustituir. Algunasprintf
implementaciones tienen características aún más oscuras, como la%1$<identifier>
que usé aquí .PHP, 39 bytes
fuente
Pure Bash, 13
Aquí
^K
y^H
son caracteres de control ASCII de tabulación vertical literal y retroceso. Elxxd
volcado de este script es el siguiente: úseloxxd -r
para regenerar el script real:{a..z}
es una expansión estándar de llaves para producira b c ... z
(separadas por espacios)^K
pestaña vertical baja el cursor una línea hacia la misma posición^H
retroceso mueve el cursor hacia atrás para borrar el espacio del separadorPruébalo en línea .
col
ytac
se usan en el pie de página para que esto se represente correctamente en una ventana del navegador, pero esto es innecesario en un terminal normal.Si los caracteres de control poco ortodoxos anteriores en la salida son demasiado extensos para usted, entonces puede hacer esto:
Bash + utilidades comunes, 24
Aquí
^K
y^H
son caracteres de control ASCII de tabulación vertical literal y retroceso. Elxxd
volcado de este script es el siguiente: úseloxxd -r
para regenerar el script real:Pruébalo en línea . La pestaña vertical y el espacio de retroceso pueden volverse invisibles por su navegador, pero están allí (invisibles en Chrome, visibles en Firefox).
col -x
vuelve a representar la entrada de modo que los divertidos caracteres de control se reemplacen con espacios y líneas nuevas para obtener el mismo resultado visualcol
genera líneas en orden inverso.tac
corrige eso.fuente
^K
como cursor hacia arriba, que es el comportamiento quecol
debe emularse aquí.col
manual llama a un VT un "avance de línea inversa". xterm, gnome-terminal y OSX terminal todos despliegan una línea aunque ...Brain-Flak ,
124, 116, 106 bytesPruébalo en línea!
Explicación:
Esta respuesta abusa del Stack Height Nilad , pero de una manera nueva que nunca he usado antes, de lo que estoy muy orgulloso. Aparte de eso, la respuesta no es demasiado inteligente.
Analizando los caracteres utilizados en este arte ASCII, en realidad hay tres valores que se utilizan con frecuencia:
32 (espacio),
64 (agregue 64 a N para obtener la enésima letra del alfabeto), y
10 (nueva línea)
Además de 26. (número de bucles) Y estos números se introducen en diferentes ubicaciones, por lo que realmente no podemos reutilizar los valores intermedios para hacer que los números grandes sean más pequeños. Y presionar todos estos números es solo la friolera de 86 bytes:
Esto es horrible Así es como lo hacemos más conveniente. El enfoque obvio es empujar un
32
a la pila alternativa, lo que hace que nuestro32
fragmento se convierta:(<>({})<>)
y nuestro64
fragmento se convierta(<>({})({})<>)
. Si combinamos nuestro empuje inicial 32 con nuestro empuje inicial 26 , podemos ahorrar aproximadamente 8 bytes. (mi primer golf)Pero aquí es donde entra el truco del que estoy realmente orgulloso. Dado que no estamos usando la pila alternativa para otra cosa, también podríamos jugar golf en el 10 también. Para hacer esto, empujaremos 4 números arbitrarios en la pila justo al comienzo del programa. Como también presionamos 32, esto aumenta el valor de la
[]
nilad, a 5, lo que hace que nuestro10
fragmento sea mucho más conveniente. Y, por suerte para nosotros, ¡también nos permite jugar a los fragmentos 32 y 26 !Se convierte
Así que aquí hay una explicación detallada:
fuente
V ,
151311 bytesPruébalo en línea!
Explicación
fuente
Hojas de cálculo de Google,
6765 bytes= Fórmula de matriz (IF (ROW (A1: Z) = COLUMN (A1: Z26), CHAR (96 + ROW (A1: Z26)), ""))Saliendo de la aclaración de que cualquier espacio en blanco servirá, he usado celdas visiblemente vacías
Avíseme si esto no cuenta, si he entendido mal el recuento de bytes o si he jodido algo de etiqueta, ya que esta es mi primera publicación aquí.
Editar: Resulta que puedo guardar 2 bytes al omitir el "" ya que las hojas de Google aceptarán un valor vacío si.
fuente
APL (Dyalog) ,
97 bytes SBCS-2 bytes gracias a la pista de ngn.
[¡Pruébalo en línea!] [TIO-j3o0ipjy]
⎕A
el alfabeto mayúscula A⌸
entre cada par (elemento, lista de índices), inserte la siguiente función tácita:↑⍨
del elemento (la letra) tome ...∘
el…-
número de caracteres de índice negado, es decir, muchos caracteres de la parte posterior, relleno en el frente con espacios.Pruébalo en línea!
fuente
↑
es{.
y⍳
esi.
Adverbios:¨
es"0
y⍨
es~
.(a.{~97+i.26){."0~-1+i.26
⌸
para generar una matriz adecuada y ahorre 2 bytesOctava,
2519 o 12? bytesPruébalo en línea!
Otra solución propuesta por @LuisMendo (12 bytes) que lo probé en la versión de Windows de Octave:
Explicación:
Genera matriz diagonal de
a:z
.fuente
Java 8,
72717061 bytes-1 byte generando el alfabeto en mayúsculas en lugar de minúsculas.
-1 byte imprimiendo directamente, en lugar de devolver una cadena multilínea.
-8 bytes gracias a @ OliverGrégoire utilizando
printf
directamente para deshacerse de élString s="";
. Y también -1 byte cambiando()->
ao->
.Pruébalo aquí
fuente
c=65
(o en64
realidad) para que no necesite el número de 3 dígitos. ¿Puede devolver una matriz en lugar de la cadena ahorrarle bytes ya que puede eliminar el+"\n"
?()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}
usando la misma idea que en otro desafío .Jalea ,
109 bytes-1 byte gracias a Dennis (evite disminuir
J
utilizando un rango reducido26Ḷ
, directamente)Un programa completo que imprime el resultado.
Pruébalo en línea!
(
ØaJ’⁶ẋż
para 7 es un enlace monádico que devuelve una lista de listas de listas de caracteres, pero[["a"],[" ","b"],[" ","c"],...]
es probable que sea inaceptable).Sin embargo, no me sorprendería si hubiera una forma más corta en la que no había pensado.
¿Cómo?
fuente
[["a"],[" ","b"],[" "," ","c"],...]
ya que una lista de caracteres es una definición alternativa para una cadena, pero una tupla no parece encajar :)"..."
es una lista de caracteres, así que realmente es[[['a']],[[[' '],['b']],[[' ',' '],['c']],...]
porque Jelly no tiene cadenas, solo listas.26Ḷ⁶ẋżØaY
guarda un byte.ØaJ’⁶ẋż
para7
, para su versión alternativa.PowerShell, 29 bytes
fuente
$_
medida que avanzas, bien.Alice ,
2220 bytesPruébalo en línea!
Aunque la salida es una cadena, resulta que el modo ordinal no es el camino a seguir para este desafío.
Explicación
Solución previa
Pruébalo en línea!
Revisé unas diez soluciones de 23 bytes antes de poder encontrar esta.
Explicación
Este programa usa la cinta para rastrear el número de espacios a la salida. Los modos cardinal y ordinal usan la misma cinta, pero tienen cabezales de cinta separados. Los dos modos tienen diferentes interpretaciones de lo que ven en la cinta, y el programa aprovecha al máximo esa diferencia.
Los comandos se ejecutan en el siguiente orden:
fuente
Brainfuck, 103 bytes
Pruébalo en línea!
La ubicación de las variables es de alguna manera mejorable.
Explicación
fuente
Hojas de cálculo de Google, 69 bytes
Nada complicado aquí. El único truco es usar
ArrayFormula
yROW(A1:A26)
devolver 26 valores diferentes para laJOIN
función. La salida se ve así:Creo que Excel 2016 puede hacer lo mismo,
TEXTJOIN
pero no puedo ingresar fórmulas de matriz en la versión en línea y solo tengo 2013 yo mismo. La fórmula debería ser esta:Al ingresarlo como una fórmula de matriz ( Ctrl+ Shift+ Enter) se agregan llaves
{ }
en ambos lados, llevándolo a 67 bytes. Cualquiera que pueda verificar que funciona es bienvenido a usarlo como su propia respuesta.fuente
Semilla , 6014 bytes
No creo que esto gane ningún premio, pero solo por diversión, aquí hay una solución en Seed.
Se traduce al siguiente programa Befunge:
fuente
shortC , 33 bytes
Pruébalo en línea!
fuente
Agregar ++ , 1069 bytes
Pruébalo en línea!
Sí. Eso está codificado. Estoy seguro de que hay una mejor manera, y si desea encontrarla, continúe, pero de esta manera parece funcionar mejor ya que Add ++ es difícil de trabajar con la memoria.
fuente
R ,
594947 bytes-10 bytes gracias a djhurio
-2 bytes gracias a Sven Hohenstein
Imprime en stdout. Superado por el usuario 2390246
Pruébalo en línea!
fuente
26^2
con676
para guardar un byte.m=matrix("",26,26);diag(m)=letters;write(m,'',26)
(49 bytes)cat(m,fill=27)
"diag<-"(x, y)
es similar adiag(x) <- y
. El valor no se asigna a una variable sino que se devuelve.> <> ,
46 4442 bytesPruébalo en línea!
Explicación
Esta es una toma completamente diferente de mis 46 bytes anteriores, así que también he incluido el TIO en el único. 46 bytes ¡Pruébelo en línea!
A continuación se muestra un enlace a las presentaciones de Emigna, fue la primera respuesta> <> pero creo que la mía es lo suficientemente diferente (y ahorra algunos bytes) para garantizar una segunda.
La respuesta de Emigna
fuente
Haskell ,
66 65 58 57 4543 bytesGracias a @nimi y @maple_shaft por guardar
1214 bytes.Pruébalo en línea!
fuente
<$
(' '<$[1..(fromEnum n-97)])
(' '<$['b'..n])
.f=
.['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n']
.PHP, 23 bytes
Nota: utiliza la codificación IBM-850.
Corre así:
Explicación
Cree una matriz de todos los caracteres del alfabeto, únala con una pestaña vertical como pegamento.
fuente
brainfuck , 80 bytes
Pruébalo en línea!
Formateado:
Utiliza una función de generación multiplicativa simple para poner algunas constantes en la memoria, luego repite el proceso de imprimir N espacios y luego
'A' + N
paraN = 0..25
.Anotado:
fuente
RProgN 2 , 5 bytes
\ x0B es un literal de tabulación vertical
Esto solo toma el alfabeto en minúsculas, lo divide y lo une con pestañas verticales. Esto produce el efecto deseado en ciertos terminales de Bash.
fuente