En el menor número de bytes posible, escriba un programa o función que genere lo siguiente:
Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwxyZ
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
Abcdefghijklmnopqrstuvwxyz
Se permite una nueva línea final. Puede encontrar una implementación de Python sin referencia aquí .
code-golf
kolmogorov-complexity
Ajenjo
fuente
fuente
Respuestas:
Pyth, 12 bytes
Demostración.
En Pyth,
G
es el alfabeto en minúsculas.+Gt_G
es decirabcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
, el carácter que debe estar en mayúscula en cada fila.V
configura un bucle for sobre esta cadena, conN
la variable del bucle.En el cuerpo,
XGNrN1
es una función de traducción de cadenas.X
traduceG
, el alfabeto, reemplazandoN
conrN1
, la versión en mayúscula deN
.r ... 1
es la función mayúscula Esto da la salida deseada.fuente
C, 73
A veces, el enfoque más simple es el mejor: imprime cada personaje uno por uno. esto supera muchos idiomas que realmente no debería.
explicación
fuente
Python 2, 69 bytes
Agradable y simple, creo.
fuente
Brainfuck (8 bits), 231 bytes
Ok, entonces nunca será el más corto, pero es la participación lo que cuenta ... ¿verdad?
Pruébelo aquí (asegúrese de marcar 'Memoria dinámica')
fuente
>
desplaza una celda a la derecha, por ejemplo.Binario de MS-DOS, 61
Este código no tiene que compilarse, se ejecutará en MS-DOS si lo escribe en un archivo llamado wave.com. El código en hexadecimal:
O, si prefiere algo más legible, aquí es cómo producirlo usando debug.exe (la línea vacía después del código es importante):
fuente
Ruby:
71686563 caracteresEjecución de muestra:
fuente
puts f=(e=*?a..?z).map{|c|(e*"").tr c,c.upcase},f[0,25].reverse
Matlab,
605854 bytesGracias a Dennis Jaheruddin por salvarme 4 bytes.
fuente
char(x)
por[x '']
salvar a un byte.end-1
es una forma bastante detallada de escribir 25![x '']
truco no es habitual para mí. Pero ahora recuerdo haberlo visto en una de tus respuestas :-)SWI-Prolog, 136 bytes
Abusando de retroceder al bucle ...
fuente
Haskell
1008988 bytesLa función auxiliar lambda
\(h,c:t)
toma un par de listas de valores ascii y concatena ambas, pero con el primer valor de la segunda lista en mayúscula. La función principal divide el alfabeto en minúsculas (dado en ascii97..122
) en cada posición0,..,24,25,24,..,0
y llama a la lambda en cada paso. Antes de imprimir cada valor se convierte en el carácter correspondiente.fuente
Scala
110109 caracteresfuente
foreach println
amkString("\n")
, y generar una cadena como valor de retorno en lugar de imprimirla en la pantallaSQL (postgreSQL),
107101Generar son series de -25 a 25 y usan el valor absoluto para reemplazar los caracteres con su versión en mayúscula. Gracias a manatwork por el consejo sobre el operador @.
fuente
@
operador?Haskell, 81 bytes
Contando bytes como lo hizo @nimi;
f
es una acción IO que imprime la salida deseada.fuente
Pyth -
1817 bytesPrimer pase, probablemente se puede hacer mucho más corto. Usos
X
para sustituir yr1
capitalizar.Pruébelo en línea aquí .
fuente
MATLAB - 58 bytes
Similar a la solución de Luis Mendo , pero usando las habilidades de transmisión de
bsxfun
.Aprovechando que en ASCII, la diferencia entre un carácter en mayúscula y minúscula está exactamente a 32 valores uno del otro, primero generamos letras minúsculas a partir de los códigos ASCII 97 a 122, que son los códigos ASCII de minúscula a minúscula z respetuosamente, luego crear una matriz 51 fila que contiene los 26 códigos ASCII de 97 a 122. Por lo tanto, cada fila de esta matriz contiene una secuencia numérica de los valores de 97 a 122. a continuación, creamos otra matriz donde cada i TH fila de esta matriz contiene una 32 en la i th columna. Las primeras 26 filas de esta matriz tienen este patrón, que es esencialmente la matriz de identidad multiplicada por 32. La función
eye
crea una matriz de identidad para ti. Las últimas 25 filas de esta matriz son la matriz de identidad escalada girada 90 grados.Al tomar esta matriz de identidad ponderada personalizada y restarla con la primera matriz, y luego convertir los códigos ASCII resultantes en caracteres, se produce la secuencia deseada del "Sombrero Mexicano".
Ejecución de ejemplo
También puede ejecutar este ejemplo utilizando el entorno de octava en línea de IDEone. Octave es esencialmente MATLAB pero gratis: http://ideone.com/PknMe0
fuente
rot90
-- ¡bien pensado!J,
3123 bytes8 bytes guardados gracias a @Mauris.
Pruébelo en línea aquí.
fuente
u:|:(97+i.26)-32*=|i:25
(¡mónada=
es realmente útil aquí!)=
aquí. ¡Es muy bonito!Perl, 51 bytes
Código de 50 bytes + parámetro de línea de comando de 1 byte
Se puede usar de la siguiente manera:
O en línea aquí (tenga en cuenta que tuve que agregar
,"\n"
a esto ya que no pude agregar el argumento -l).Método mucho más largo Antes de la versión abreviada anterior, probé un método diferente que terminó siendo bastante grueso. Lo dejé a continuación de todos modos para referencia.
Código de 86 bytes + línea de comando de 1 byte arg
Primero Perl, he jugado al golf correctamente, así que imagino que se puede hacer mucho con él. ¡Sugiera mejoras!
Se puede usar de la siguiente manera:
O en línea aquí (tenga en cuenta que tuve que agregar "\ n" a esto ya que no pude agregar el argumento -l).
Explicación
El enfoque general es utilizar la sustitución de expresiones regulares para hacer todo el trabajo duro. Comenzamos con:
Esto coincide
(([A-Z])|0)(\D)
y se reemplaza con\U\3
(\ U cambia a mayúsculas) para dar:Desde este punto en adelante, continuamos haciendo coincidir la misma expresión regular y reemplazando con
\L\2\U\3
:Ahora la segunda alternancia de las expresiones regulares coincide
(.)((?2))(1)
(que es lo mismo que(.)([A-Z])(1)
). Reemplazamos con\U\4\6\L\5
para dar:Esto continúa coincidiendo y reemplazando hasta llegar a:
y no hay más coincidencias de expresiones regulares.
En cada punto del bucle, quitamos el '1' e imprimimos.
fuente
PHP
877169 bytesNo es el más corto, pero funciona según lo previsto.
Gracias a @manatwork por algunos consejos para reducir mucho su tamaño.
Y gracias a @Blackhole , el tamaño se redujo en 2 bytes.
No es exactamente bonito, pero funciona.
fuente
join()
el primer parámetro de.$i<25?$i:25-($i-25)
→25-abs($i-25)
for(;$i<51;){$L=range(a,z);$L[25-abs($i++-25)]^=" ";echo join($L),"↵";}
(Simplemente ajuste la línea donde usé “↵” en el código.)\n
estaba allí. La inicialización de$i
se dejó como un accidente. Y muchas gracias por el25-abs($i-25)
. No llegaría solo.for
ciclo puede optimizarse:for(;$L=range(a,z),$L[25-abs($i++-25)]^=' ',$i<52;)echo join($L).'↵';
(-2 bytes).PowerShell 3.0, 82 bytes
fuente
Arquitectura del tipo de nodo TIS T21 -
216215 bytes¡Míralo en acción aquí! Hay un
DOWN
video en ese video que luego juguéANY
, pero es funcionalmente idéntico.Este lenguaje no tiene concepto de cadenas o caracteres, por lo que debo señalar que estoy usando valores ASCII, es decir, la salida comienza
97, 66, 67
...88, 89, 90, 10, 65, 98
...Aquí está el código en el formato de los datos guardados de TIS-100, a los efectos de puntuación:
Explicación
fuente
JavaScript ES6, 121 bytes
Esto es realmente largo porque tiene más sentido codificar el alfabeto que usar el absurdamente largo
String.fromCharCode
para generar los caracteres. Pruébelo a continuación con el fragmento de pila, que utiliza ES5 mejor compatible y más abajo.fuente
CJam, 23 bytes
Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
R,
7870Mejorado por @MickyT
fuente
M=replicate(26,c(letters,"\n"))
lugar de una matriz. Le ahorrará algunos byteswrite
: tio.run/##K/r/…Asamblea de Linux, 289
Desafortunadamente, no es competitivo con lenguajes de alto nivel y probablemente está lejos de ser óptimo, pero es bastante sencillo. Ejecútelo usando
nasm -f elf64 -o a.o wave.S; ld -s -o a a.o; ./a
(el binario resultante tiene solo 568 bytes):fuente
Ensamblado x86 para DOS, 41 bytes compilados
Binario:
Código fuente, guardar como "wave.asm", compilar con "nasm -f bin -o wave.com wave.asm" y ejecutar con "dosbox wave.com"
fuente
C #,
140139135132Expandido
Guardado 1 byte gracias a @ Gunther34567 usando un ternario en lugar de
if
Guardado 4 bytes y luego anidando ese ternario dentro del bucle y moviendo el alfabeto hacia el exterior del bucle
Guardado 3 bytes combinando declaraciones enteras gracias a @eatonphil
fuente
if(i==25)d=-1;
ad=i==25?-1:d;
var d=1
aint d=1,i
.Bash:
7666 caracteresEjecución de muestra:
fuente
printf
llamada. Rechacé la edición , para que pueda probarla usted mismo.Sed:
135119116111 caracteres(Código de 109 caracteres + opción de línea de comando de 1 carácter + entrada de 1 carácter).
Ejecución de muestra:
fuente
Javascript (ES6), 113 bytes
110 bytes
102 bytes
La vieja escuela es inmejorable a menos que tengamos operador de rango / función / generador / lo que sea en js
100 bytes
Desafortunadamente Math.abs es demasiado largo
9694 bytesAunque he sido rechazado sin explicación, continúo mi lucha
Podemos recortar un par de bytes reorganizando las instrucciones del bucle:
fuente
Perl -
9564 bytesAprovecha el hecho de
\u
que el siguiente personaje está impreso en mayúscula en Perl.Gracias a manatwork por guardar 31 bytes y arreglarlo (mi código anterior no funcionó).
fuente
\u
parece funcionar en una muestra separada, pero no en su código. :( Todos los caracteres permanecieron en minúsculas. ¿Podría mostrarnos cómo se debe ejecutar su código? (Lo puse en un archivo y luego llaméperl
pasando el nombre del archivo, sin interruptores). Por cierto, usoperl
5.20.2.\u
es seguido por la letra para transformarse en el mismo literal de cadena:for$c(0..50){$n=1;print map{++$n==27-abs$c-25?"\u$_":$_}a..z,$/}
q (37 caracteres)
Un primer corte
fuente
@[.Q.a;;upper]@'x,1_reverse x:til 26
por 36 bytes . O@[.Q.a;;.q.upper]@'x,1_|x:!26
para 29 bytes en K4.