El programa debe imprimir el alfabeto cuatro veces: primero en el orden alfabético normal, segundo en el orden de un teclado qwerty, tercero en el orden de un teclado dvorak y, por último, en orden alfabético inverso. La salida debería parecerse a esto:
abcdefghijklmnopqrstuvwxyz
qwertyuiopasdfghjklzxcvbnm
pyfgcrlaoeuidhtnsqjkxbmwvz
zyxwvutsrqponmlkjihgfedcba
La salida no distingue entre mayúsculas y minúsculas, y puede agregar u omitir nuevas líneas o espacios donde lo desee.
El truco : el programa debe tener menos de 104 caracteres o, en otras palabras, menos de la longitud del alfabeto por cuatro.
Aceptaré la respuesta con el código más corto, a menos que vea algo realmente inteligente o interesante que me impresione más.
EDITAR: aceptaré la respuesta más corta el miércoles 4/27/2011.
EDIT2: ¡ Y el ganador es (como siempre) Golfscript en 64 caracteres! El segundo lugar , que está detrás de solo tres caracteres, también está en Golfscript, con 67 caracteres, seguido por Bash en el tercer lugar con 72 caracteres.
Pero había algunos otros que quería mencionar, como este , que, según su definición, solo usaba 52 "caracteres", y este donde lo escribió en un idioma que creó.
Hubo algunas personas que rompieron una regla no escrita y no calificaron, pero las mencionaré solo por su forma de pensar sin la caja.
fuente
Respuestas:
Python 2, 97 caracteres
¡Ordenar QWERTY y volver a convertir de la lista a cadena es más corto que el alfabeto mismo! *
Otra opción para generar el alfabeto en menos caracteres que el alfabeto en sí:
Aunque esto imprime una lista de caracteres de Python.
No hay mucho que hacer aquí en cuanto a la compresión de datos; intercalar las letras en 5 bits solo ahorra 39 caracteres, lo que no es mucho si luego tiene que desatascarlos (y aún tiene que representar los bytes literalmente); parece que zlib (solo como ejemplo) ahorra menos de 20 bytes; codificar la secuencia como una lista de deltas para la siguiente letra todavía toma 5 bits para cada delta, porque el más grande en esta secuencia es -22:
* Aunque solo un poco.
fuente
q="qwertyuiopasdfghjklzxcvbnm";a=sorted(q);print(*a,q,"pyfgcrlaoeuidhtnsqjkxbmwvz",*a[::-1])
PHP, 100 bytes
Como ISO 8859-1:
Para reproducir de manera confiable,
fuente
Rubí 1.9,
88878480fuente
Bash, 82
fuente
Python,
9796 "personajes"Tomando su uso de la palabra "caracteres" generosamente, aquí hay algunas python que usan caracteres unicode de 16 bits para codificar 3 caracteres normales cada uno. El programa tiene un total de 96 caracteres, 35 de los cuales son los personajes Unicode más extraños que he visto.
No estoy seguro de que la basura Unicode vendrá correctamente, así que aquí hay un programa de Python para generar el programa de Python anterior:
fuente
Bash, 72
EDITAR: eliminado
tr -d
.Créditos: Alexander, Roger.
fuente
|tr -d ' '
, guardar 10 caracteres y hacer que esta versión sea líder en el momento de escribir :-)Golfscript, 64 caracteres
Nota: también 64 bytes. En realidad, jugar con Unicode y los cambios de base parece contraproducente porque
base
es una palabra clave demasiado larga.fuente
Windows PowerShell, 89
No es particularmente bueno, pero al menos más corto que la cadena de salida:
Way shorter now that I saw that there is a relaxation on whitespace. And a little shorter still, if I ignore case which I'm allowed to.
fuente
)
allí. Debería ser 88.Golfscript,
76, 67 caracteresfuente
123,97>+
para generar el alfabeto inicial.CI - 92 caracteres
CI ("Compilador / Intérprete") es un lenguaje simple basado en pila que creé para el desafío "Intérprete de autointerpretación" (link to answer). I posted that answer about two hours before this challenge was posted. It's no GolfScript (which I still haven't gotten around to learning), as my goal was to make the interpreter short.
Este programa debe pasarse al
ci
intérprete a través de la entrada estándar. El intérprete trata los caracteres después de una terminación)
como entrada al programa. Mi lenguaje no admite literales de cadena, por lo que stdin está tomando su lugar.fuente
Python 2.7.X - 103 caracteres irónicamente ...
Resulta que generar el alfabeto en python requiere más caracteres que codificarlo. Como lo hace importar el alfabeto. Tengo que amar un lenguaje centrado en la legibilidad a veces.
fuente
+
lugar de,
y ahorrar ese espacio.C - 133 caracteres
Versión acortada de Casey:
Espacio en blanco:
Salida transpuesta
Aquí hay una versión que transpone la salida, por diversión. 134 caracteres.
Espacio en blanco:
Huellas dactilares:
fuente
i
como global y colocandostrcpy(...)
en el primer bloque del bucle for, obtienes 129. aunque todavía es demasiado.J
Mi primera experiencia con J. La idea es simplemente usar el número canónico (lexicográfico) de la permutación requerida; desafortunadamente, esto requiere más caracteres que codificarlo. Pero si uno pudiera encontrar alguna expresión aritmética (usando poderes y demás) que produzca los números mágicos, podría acortarse.
fuente
Python, 90 caracteres unicode
ejecutar en ideone - http://ideone.com/R2dlI o codepad - http://codepad.org/lp77NL9w
fuente
Javascript
139121nuevo:
antiguo:
fuente
alert((a=(q='qwertyuiopasdfghjklzxcvbnm').split('').sort()).join('')+q+'pyfgcrlaoeuidhtnsqjkxbmwvz'+a.reverse().join(''))
Lua - 111 caracteres
Beats C y C ++! :-)
Versión "inteligente" en Lua
129 caracteres
Espacio en blanco:
fuente
C -
163135caracteresEsto no cumple con los requisitos, ya que cuenta con más de 104 caracteres, pero fue divertido de hacer. Quizás alguien tenga algunas sugerencias.
Esto compila en GCC 4.5.1 (otros no probados). ¡Yay por omitir #incluye, tipos de retorno y declaraciones de variables! La codificación rígida hubiera resultado en un programa más corto, pero eso no es divertido.
Versión de espacios en blanco:
C -
124122cojoAquí está la versión rígida codificada, y todavía no hace el corte.
fuente
puts()
lugar printf en el segundo caso: 2 caracteres menos.while
conputs(a);
en el primer caso, soltar*p=a
; - 138 caracteres en lugar de 163.puts
. Cambiado.PHP 88 bytes
fuente
J - 69 char
Explicación:
(,\:~) y
- Ordenary
en orden descendente (\:~
) y anexar (,
) eso ay
.x (,~|.) y
- Invierta (|.
)y
y añádalo al frente dex
.x F&G y
- Ejecutar(G y) F (G y)
, es decir, realizarF
los resultados de la aplicaciónG
a los argumentos.Entonces, todos juntos, agregamos el alfabeto, hacia atrás, a las cadenas Dvorak y QWERTY inversa, luego invierte la QWERTY / alfabeto y la ponemos frente a la Dvorak / alfabeto.
fuente
Bash, 64
Llego muy tarde a la fiesta, pero tengo una solución de 64 personajes. El programa debe guardarse en el disco para funcionar
Cómo funciona:
{a..z}
y{z..a}
se explican por sí mismos, pero básicamente eso solo imprime cada personaje en ese rango respectivo.$(sed 1d $0|base64)
emite el programa, ignora la primera línea y luego la pasa a través de un codificador base64 (como lo han hecho otros ejemplos).La razón por la que esto es más corto que otros ejemplos similares ...
... es porque los
{a..z}
rangos son más cortos que las codificaciones base64, por lo que solo necesito codificar en base64 la mitad de la cadena. Y como estoy leyendo los datos binarios del archivo en lugar de almacenarlos en una cadena, no necesito escapar de ningún carácter en el código.Cómo recrear este script:
Si el código no copia / pega correctamente desde Stack Exchange a su editor de texto, ejecute lo siguiente en su línea de comando (agnóstico de shell):
Luego correr:
fuente
05AB1E , 25 bytes
Pruébalo en línea!
Explicación
fuente
C ++
Es un poco triste cuando la forma más corta de hacer algo en un idioma es codificarlo.
fuente
std::cout
es más corto que esousing namespace std
, y puedes saltartevoid
.J (77)
Afeitado de 3 caracteres mediante el uso de una variable:
Afeitado 2 personajes más mediante el uso de un enfoque de nivel de valor:
fuente
Haskell (95)
Perl (51)
No hay una regla que diga que no puedo.
fuente
Q (68)
Salidas:
Intenté encontrar una mejora en la codificación rígida de los dos medios, pero no se me ocurrió ninguno.
fuente
K - 69 char
Explicación:
26#a:
- Asigne los dos diseños de tecladoa
y luego tome los primeros 26 caracteres.b:a@<
- Ordenara
y asignar eso ab
:<
proporciona la permutación para un orden ascendente y@
nos permite indexara
para ordenarlo.b,a,|
- Agregue en una filab
, luegoa
, luego el reverso (|
) deb
.fuente
Pyth, 57
Alfabeto, cadena, alfabeto invertido. G es el alfabeto. La impresión es implícita.
fuente
Dyalog APL , 60 bytes
Huellas dactilares:
Que está permitido según OP:
fuente
Gelatina, 36 bytes (no competitiva)
Pruébalo en línea!
Explicación:
fuente
05AB1E ,
6059 bytesPruébalo en línea!
AÂ
- empuja el alfabeto bifurcado."qwertyuiopasdfghjklzxcvbnm""pyfgcrlaoeuidhtnsqjkxbmwvz"
- Empuja qwerty y drovak.»
- Impresiones de pila.05AB1E , 57 bytes (si no te importa el azar \ n)
Pruébalo en línea!
fuente
""
con una nueva línea.