Escriba un programa o función que genere este texto exacto, sin distinción entre mayúsculas y minúsculas:
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.
(Basado en la canción del alfabeto que muchos niños estadounidenses aprenden a memorizar el alfabeto, aunque editado para mayor compresibilidad).
El resultado debe verse exactamente igual que el anterior (de nuevo, sin distinción entre mayúsculas y minúsculas), pero puede contener espacios finales en cada línea y / o nuevas líneas finales. Observe el período al final.
Este es el código de golf, por lo que gana el código más corto en bytes.
code-golf
string
kolmogorov-complexity
ETHproducciones
fuente
fuente
/(?=[HQTW])/
H, I, J, K, LMNO, P
?Respuestas:
Vim,
42, 40 pulsaciones de teclas / bytesGracias a Lynn y su increíble respuesta vim por el consejo para obtener el alfabeto de la ayuda.
¡Gracias a RomanGräf por guardar dos bytes!
Explicación:
Luego, movemos el final de la línea con
$
, cambiamos un carácter conch
e insertamos un punto.fuente
05AB1E , 16 bytes
Código
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea!
fuente
Bash + utilidades GNU, 36
Ideona
fuente
echo {A..Y}, Z.|sed 's/[HQTW]/\n&/g'
?JavaScript (ES6),
6665 bytesVencer a @Neil era imposible ... Por eso lo hice. :-)
Golfé 1 byte gracias a un truco de @LevelRiverSt . El uso
String.fromCharCode
es de 7 bytes más:Cómo funciona
Esto genera de forma recursiva cada carácter del alfabeto de
a
ay
, usando.toString()
. Se agrega una coma después de cada letra, más una nueva línea si9568512>>i-9&1
es 1, o un espacio en caso contrario. Cuando la recursividad pasa de 34, es decirz
, a , la función simplemente regresa"z."
.fuente
Python 2.7,
67 6663 bytesDennis guardó un byte.
fuente
exec
lugar defor
debería guardar un byte.Jalea ,
1918 bytes¡Gracias a @Adnan por jugar golf en 1 byte!
Pruébalo en línea!
Cómo funciona
fuente
JavaScript (ES6),
8074 bytesProbablemente sea posible acortar esto con atob / btoa si puede averiguar cómo usar la codificación ISO-8859-1. Editar: guardado 6 bytes gracias a @RickHitchcock.
fuente
.join`, `
? Ponga barras diagonales inversas antes de las comillas. (Sí, la rebaja de comentarios es diferente, suspiro ...)Pyke,
231917 bytesPruébalo aquí!
fuente
R,
8371 bytesPruébalo en línea!
Hace una matriz de 3 filas (una con las letras, una con las comas y la otra con un espacio o una nueva línea).
Editar : Gracias Billywob!
fuente
cat(a,sep="")
guarda algunos bytes:a=rbind(LETTERS,","," ");a[3,7+3*c(0,3:5)]="\n";cat(a[,-26],"Z.",sep="")
[-26]
onLETTERS
guarda directamente otro byte.CJam, 26 bytes
Intérprete en línea
fuente
Brainfuck, 117 bytes
Cada una de las primeras cuatro líneas tiene un espacio final, y el programa asume celdas de 8 bits. Pruébalo en línea!
(Manejar la última línea es complicado ...)
fuente
Perl, 37 bytes
Créditos a @Dom Hastings para esta solución (3 bytes más cortos que los míos, ver más abajo).
Ejecutar con
-E
(o-M5.010
) bandera:Mi versión anterior, 3 bytes más (total de 40 bytes):
fuente
say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."
JavaScript (ES6),
6664 bytesRegex coincide con los caracteres pero no con los retornos de carro, por lo que, usando el reemplazo de expresiones regulares, puedo agregar el "," a cada carácter.
Editar: se eliminaron 2 caracteres gracias a ETHProductions
fuente
$1
a$&
.Cheddar, 70 bytes
Parece que no se está acortando más que esto. He hecho otras versiones de esto que usan métodos bastante interesantes, pero esto es más corto
Pruébalo en línea!
Explicación
El
@"
operador se utiliza para generar cadenas a distancia. Genera una cadena que comienza desde el código de caracteres izquierdo al código de caracteres derecho.Por ejemplo,
65
es el código char paraA
y90
paraZ
. Hacerlo65 @" 90
generaría de la A a la Z o el alfabeto.fuente
C,
11210281 bytesGracias a cleblanc y LevelRiverSt!
fuente
i,c,d;main(){for(c=65;c<91;++c){if(c-"GPSVZ"[i])d=32;else d=10,++i;printf("%c%c%c",c,c-90?44:46,d);}}
i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="GPSVZ"[i]?++i,10:32);}
. Tenga en cuenta que puede pegar absolutamente cualquier cosa entre?:
un operador ternario, incluso varias expresiones separadas por comas (se evalúa como la última).Brainfuck, 157 bytes
Pruébalo en línea
fuente
Ruby,
5654 bytesLa primera línea termina con una nueva línea literal.
Editar: guardado dos bytes reemplazando
'A'..'Y'
con?A..?Y
.fuente
Vim, 32 bytes
26o<C-V><C-V>64,<Esc>r.V{g<C-A>8Jj9Jj3Jj.j4JcH<C-R>"
Deja una línea en blanco al final, lo que estaba permitido, pero es extraño ser tan torpe. Peor aún, estoy terminando en modo de inserción. He visto a otras personas hacerlo aquí, ¿así que supongo que está permitido? Se siente sucio
26o<C-V><C-V>64,<Esc>
: El primero<C-V>
hace que el segundo se inserte literalmente. Los<C-V>64
mensajes que esto deja en el búfer se convertirán en puntos de código ASCII y luego en letras. Comas ya en.r.
: Nunca volveré a estar al final, así que hazlo.
ahora.V{g<C-A>
: Utiliza el incremento visual para convertir todos los64
s en los puntos de código ASCII de las letras mayúsculas.8Jj9Jj3Jj.j4J
: La línea arbitraria se une. El primero es en8J
lugar de7J
porque estamos lidiando con la línea en blanco. Los3J
s repetidos son elegibles para una repetición de puntos.cH<C-R>"
: Las personas generalmente piensani<C-R>
como un modo de inserción pegar, pero es más como una macro de modo de inserción. Las cosas como<C-V>65
se ejecutarán como si estuvieran escritas e interpretadas como un punto de código decimal. Esto deja una línea adicional (permitida) al final y permanece en modo de inserción.fuente
PowerShell v3 +,
607867 bytesOKAY. Esta vez he leído, entendido y seguido las especificaciones. Promesa. :RE
Toma la matriz
65..90
y recorre cada elemento|%{...}
. Cada iteración, estamos construyendo una nueva cadena usando concatenación, indexación y multiplicación.Primero, tomamos el número actual y lo
char
emitimos para convertirlo en una letra ASCII. Eso se concatena con otro carácter, basado en la indexación en la cadena'.,'
si estamos90
o no (es decir, para tener en cuentaZ.
mientras todo el resto son comas). Esa es una cadena concatenada" "
para separar las letras en el espacio y la multiplicación de cadenas"`n"
basada en el valor booleano para determinar si el elemento actual es-in
la matriz especificada (es decir, si necesitamos concatenar en un carácter de nueva línea). La cadena resultante se deja en la tubería.Esas cadenas se encapsulan en parens y se
-join
editan juntas en una nueva cadena, que luego también se deja en la tubería e implícitaWrite-Output
al final imprime el resultado. Como tenemos`n
en la cadena, se convierte automáticamente en nuevas líneas al imprimir.Requiere v3 + para el
-in
operador. Tiene un espacio final en cada línea, lo cual está bien según las especificaciones del desafío.Ejemplo
fuente
PHP, 62 bytes
solo para comparación 87 Bytes
fuente
\n
."# (?=[HQTW])#"
y acortar el reemplazo a los"\n"
mismos bytes y hacerlo más claro. Usar una función obsoleta puede confundir a los principiantes. Y la ruptura física se puede interpretar mal en otros sistemas luego de Unix. Puedes publicarlo como tu propia sugerencia.MATL,
3829 bytes¡9 bytes guardados gracias a @Luis!
Pruébalo en línea!
Explicación
fuente
R, 146 bytes
Explicación:
LETTERS
está predefinido para letras mayúsculas.La
f
función es para concatenar el vector x,
con adicionaly
(usado para líneas nuevas).El gato es el utilizado, ya que imprime
\n
como líneas nuevas.f
se llama en las letras para formar filas y luego en las filas nuevamente para formar toda la salida.Probablemente golfable - No me gustan las múltiples llamadas de f ...
fuente
CJam, 31 bytes
Explicación:
Pruébalo en línea
fuente
Julia, 71 bytes
Requiere 0.5 o mejor para transmitir
.()
fuente
print
definición de función /? Por otro lado, no guardarjoin
en una variable guarda un byte.join
. He contado mal. La ejecución del programa devuelve la cadena. ¿No es un programa que devuelve una cadena una salida válida? (¿O son solo las funciones que pueden devolver cosas para que cuenten como salida? Sif()=
es más cortoprint()
)f()=
o()->
está bien: creo que la idea es que las funciones son asignables y se pueden ejecutar varias veces, y en contraste esto sería un fragmento de código.Cheddar, 57 bytes
Pruébalo en línea! ¿No es eso hermoso? Es un bonito rectángulo.
Dos sustituciones de expresiones regulares.
(65@"90)
es el alfabeto en mayúscula, se.sub(/[GPSV]/g,"$0\n")
reemplazaGPSV
a sí mismo y"\n"
,.sub(/[^Z\n]/g,"$0, ")
reemplaza a todos losZ
caracteres que no son de nueva línea y a sí mismo", "
y"."
agrega un final.
.fuente
Japt, 24 bytes
¡Pruébelo en línea!
Cómo funciona
fuente
Java,
116109105104Sin golf:
fuente
||
a|
(-3); cambiandoc==90
ac>89
(-1); cambiando'.'
a46
(-1); y cambiando'\n'
a10
(-2)."GPSV".contains(""+c)
lugar dec==71|c==80|c==83|c==86
.q, 46 bytes
fuente
Retina, 43 bytes
La nueva línea principal es significativa. Pruébalo en línea!
Esta es la primera vez que uso Retina, por lo que se agradece cualquier consejo de golf ...
fuente
Pyth, 25 bytes
Un programa que imprime el resultado en STDOUT.
Pruébalo en línea
Cómo funciona
fuente