Inspiración : en 1939, un hombre llamado Ernest Vincent Wright escribió una novela llamada Gadsby sin usar la letra 'e'.
Su tarea es escribir un conjunto de (hasta 5) programas en cualquier idioma (que tenga una sintaxis basada en texto *) para generar las 26 letras del alfabeto en orden. Sin embargo, para cada vocal aeiou, al menos uno de los programas no debe incluir ninguna aparición de la vocal.
Entonces debe haber
- un programa que no usa ' a ' o ' A ' en ninguna parte de la sintaxis del programa.
- un programa que no usa ' e ' o ' E ' en ninguna parte de la sintaxis del programa.
- un programa que no usa ' i ' o ' I ' en ninguna parte de la sintaxis del programa.
- un programa que no usa ' o ' u ' O ' en ninguna parte de la sintaxis del programa.
- un programa que no usa ' u ' o ' U ' en ninguna parte de la sintaxis del programa.
Todos ellos deben salir abcdefghijklmnopqrstuvwxyz.
El ganador será la solución donde la duración de todos los programas es la más corta.
* ya que la restricción no sería un gran desafío en Piet o Whitespace
Rankings actuales (06 de marzo de 2014):
- A PL : 11
- B ceniza : 31
- B efunge : 26
- B urlesque : 12
- B rainfuck : 38
- C : 84
- C # : 278/149
- Mermelada C : 6
- C lojure : 81
- D c : 18
- E rlang escript : 75
- F # : 96
- F actor : 264
- F isión : 21
- F Orth : 46
- G olfscript : 8
- H askell (intérprete) : 12
- H TML : 50
- J : 17
- J ava : 137
- J avascript : 92
K : 9
K otlin : 112
- L ua : 57
- M arbelous : 96
- M ATLAB : 11
- P erl 5 (línea cmd) : 23
- P erl 5.10+ : 23
- P erl : 101
- P HP : 31
- P ostscript : 45
- P owershell : 62
- P ython shell : 48
- P ython : 83
- R : 36
- R ebmu : 15
- R uby : 20
- R uby 1.8 : 18
- S cala : 55
- S edad CLI : 42
- T cl : 49
- T -SQL : 120
- V BA : 70
code-golf
string
restricted-source
alphabet
shamp00
fuente
fuente

Respuestas:
Golfscript - 8 caracteres
fuente
91,65>+lugar.Brainfuck, 38 caracteres
Por supuesto, no hay vocales (ni ninguna otra letra) en la sintaxis de brainfuck .
fuente
++[[<+++>->++++<]>]<<<<++[->+.<]PHP, 31 bytes
No a, e, i, o, u:
La cadena binaria después de la tilde tiene la siguiente representación hexadecimal:
Dado que hay un marcador de idioma, también puedo enviar este:
Ruby (v1.8) 18 bytes
fuente
php -r 'echo("<?=~\x9e\x9d\x9c\x9b\x9a\x99\x98\x97\x96\x95\x94\x93\x92\x91\x90\x8f\x8e\x8d\x8c\x8b\x8a\x89\x88\x87\x86\x85;");' > script.php. El comando para ejecutarlo:php -d error_reporting=0 script.php; echo.Rubí (
2422)Editar: los paréntesis se pueden omitir, 2 caracteres menos:
24 caracteres en Ruby:
Cómo funciona
$>es un alias para$stdoutoSTDOUT. Puedes escribirle usando el<<operador. El término'%c'*26repite la cadena'%c'26 veces. El%operador se define en String como un alias parasprintf, por lo questr % vales equivalente a escribirsprintf(str,val). El carácter de formato%cse usa para transformar un valor de char en un char. Estos valores provienen de lo[*97..122]que crea una matriz que contiene los valores de 97 a 122. Et voilá!fuente
<<pero me había olvidado$>.$>antes, pero supuse que tenía que haber un alias variable en dólares para$stdoutque nadie pueda recordar :)$><<[*"`".."z"][1,26](nota: esto solo funciona en Ruby 1.8)p [*"".." z "] [1,26]` es aún más corto.Array#to_ses igual queArray#inspect, mientras que en 1.8 esArray#joinasí, en 1.9 la salida es en["a", "b", "c", "d", "e", ...]lugar deabcdef.... Por la misma razón,pno se puede usar (invocainspectsus argumentos, en lugar deto_s).Pyth , 1 personaje
Pyth predefina ciertas variables. G está predefinido como el alfabeto en minúsculas. Pyth también imprime implícitamente cada línea con un valor de retorno razonable.
fuente
JavaScript (100)
No 'aeou':
No yo':
fuente
\x##códigos pero no estaba seguro de si eran válidos en JavaScript.alert,confirm,prompt,console.log, ydocument.write. Simplemente declarar un literal de cadena no lo produce como salida cuando se ejecuta. De lo contrario, estarías en lo correcto, y lo habría usado.K, 9
K, 10
K, 14
fuente
(@$`)$97+!26$toma símbolos en lugar de cadenas para controlar el tipo convertido en: `c $ 97 +! 26J,
26231716 caracteresDespués de una hora más o menos hurgando en el cajón de ropa interior de J finalmente encontré una forma de eliminar los verbos
a.yu:.Previamente:
Gracias a randomra por el
#\truco.fuente
#\lugar de+/\.R, 17 + 19 = 36 caracteres
no ae (17):
no iou (19):
fuente
Golpe (38)
No hay vocales en absoluto.
fuente
[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"/bin/shes bash. Entonces el código puede terminar con/*/sh(36 bytes). Pero no he encontrado un sistema donde esto funcione. En Debian, / bin / sh no es bash. En mi Mac anterior, / bin / sh es bash 2.05b0. (1), pero esta versión es demasiado antigua y no se expande{a..z}.C,
90 8884 caracteresCompilar usando
gcc -nostartfilesfuente
_starty_exitson una buena manera de moversemain. Pero si una línea de compilación no estándar está bien, ¿por qué no-DX=main?-DX=mainsiente peor que-nostartfiles(para mí). Es una forma de mover una parte del código fuente a la línea de compilación y es lo mismo que escribir#define X mainen el código fuente que sería claramente inválido. Mientras-nostartfilesque no es una forma de cambiar el nombremain, pero elimina la restricción de que debe haber unamainfunción (llamada_start). Por otro lado, usar-nostartfilesse siente un poco como hacer trampa, especialmente porque contiene 4 de las 5 letras "malas" :)-nostartfileshasta-DX=maines pequeña, y entonces ¿por qué no guardar algunos caracteres con-DX=main()y así sucesivamente? Pero no puedo encontrar una solución que no implique nada sospechoso.-Dmn=main. La función de CA debe tener unamainfunción a menos que se utilice una opción no estándar como-nostartfiles.Golfscript, 10 caracteres
fuente
Ruby, 20 caracteres
97.chres una forma elaborada de decir 'a'..especifica un rango?zes una forma más corta de decir "z"[*range]causas de la gama de splat al que es valores en una matriz*''es lo mismo quejoin(''); pega todos los valores de la matriz juntos.$><<Perlicismo: imprimir en stdout.fuente
?zno es una abreviatura para'z', sino más bien para122. Esto, sin embargo, funciona para 18 bytes:$><<[*97.chr..'z']97.chrcon el?\x61de -1 bytes.dc:
1817 caracteresY allí murió un personaje valiente.
fuente
xpara el registro, lo que hace que la solución mía sea más ofuscada.97[dP1+dBD>m]dsmx, 17 caracteres. Aparentemente, siempre puede ingresar caracteres hexadecimales en DC, pero como la base de entrada es diez, el valor esB*10+D=11*10+13=123='{', y no 0xBD.Powershell,
7562 caracteresEditar: Se utiliza -f (String.Format) y la indexación de matrices para reducir significativamente la longitud del código.
Cómo funciona
gmes un alias paraget-members, por lo que1|gmdevuelve miembros del valor1, que es delSystem.Int32tipo:"$(1|gm)"devuelve una representación de cadena de la lista anterior, que contiene todas las vocales que necesitamos para completar el alfabeto: " int C omp ar eTo (System.Object val ue) ..."fuente
($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"que también tiene 75 caracteres :)''+$(gv)con lo"$(gv)"que obtienes,($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"es de 74 caracteres. ¡Agradable!BASH: 40 caracteres
aeiouusadofuente
Haskell, 12
¿O es esta trampa? :)
fuente
Parse error: naked expression at top levelMATLAB, 12 + 20 = 32 caracteres
No eiou (12):
No aeou (20)
fuente
En perl
También es posible sin vocales
pero mucho más difícil que en Ruby, etc. Esto usa un total de 101 caracteres pero no requiere invocación de línea cmd (perl -e).
=> Resultado: abcdefghijklmnopqrstuvwxyz
A diferencia de la solución PHP de "aspecto similar" , este es un programa real . El programa decodificado lee:
Después de codificar a valores octales, se llama a otro intérprete perl durante la ejecución mediante el `` (retroceso). Los backticks consumirían la salida, por lo tanto, se imprime en STDERR.
La codificación se realiza por sprintf:
y la codificación evaluada es el programa publicado (dentro de los backticks):
Saludos
rbo
fuente
Perl 5, 22 caracteres
(1) solo contiene
aye, 10 caracteres (requiere 5.10+, se ejecuta desde la línea de comandos):(2) solo contiene 'i', 12 caracteres:
Si no se le permite ejecutar desde la línea de comando, debe usarlo
use 5.01;say a..zpara el primero, a un costo de 7 caracteres y una vocal más, pero aún no tiene 'i', por lo que resulta en una entrada válida en 29 en total caracteres.fuente
use, aunque podría reemplazarlo con la opción de línea de comando-M5.01y eliminar dos caracteres más.-popción donde se agregan 2 caracteres al conteo. Sin embargo, al observar esta metapregunta, debería poder usarla-M5.010de forma gratuita si esa opción ayuda a acortar su código.printdeclaración condiepara rasurar 2 caractereschr 97..zpuede reemplazarsev97..zpor 3 bytes.APL (Dyalog) (
1113)Es posible que necesite una fuente APL. Se supone que esto es Unicode, pero no hay vista previa ...
Solo
U(y tal vez⍳si se cuentan las vocales griegas):(Eso es
[quad]UCS 96+[iota]26)Solo
A:fuente
Ues una vocal ...Pitón 2, 83
No a , i , o o u ; 47 :
No e ; 36 :
fuente
Python 2, 175 caracteres
Nota: imprime a salida a diferencia de la respuesta anterior de Python .
Utiliza 'e', pero no a, i, o, u -
63615965(corrige elimovimiento equivocado a minúsculas) 115 caracteres (elimina espacios).(Originalmente, utilizaba la impresión con una coma que insertaba un espacio; también imprimía letras mayúsculas. Ahora veía requisitos estrictos para 'abcdefghijklmnopqrstuvwxyz' como salida; por lo tanto, agregue la declaración de importación).
No usa 'e' (usa a, i, o, u; podría deshacerse trivialmente de a, u por una pequeña extensión) -
6160 caracteresfuente
i, por lo que debería ser:exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))y volvemos a los 64 caracteres.exec('fr%cm sysyomp%crt*\nf%cr...exec('...')JavaScript (154)
(1) Solo contiene
i(99 caracteres):(2) Solo contiene
aeou(55 caracteres):Demostración: http://jsfiddle.net/SvN5n/
fuente
$("h\x65\x61d")[0]["\x6fwn\x65rD\x6fc\x75m\x65nt"]["l\x6fc\x61t\x69\x6fn"]="j\x61v\x61scr\x69pt:\x65v\x61l(`f\x6fr(s='',l=65;l<90;l++){s=s+Str\x69ng.fr\x6fmCh\x61rC\x6fd\x65(l);};c\x6fns\x6fl\x65.l\x6fg(s)`)"208 caracteres, no seaeouiutiliza en el código. Funciona en el navegador Chrome.Pitón
159117Como se mencionó en la otra publicación de Python, la parte más difícil es lidiar con el hecho de que la única forma de salida es usar
printosys.stdout.write, los cuales contienen i. Tiene que hacerlo con 2 programas (que son independientes y no usan el shell interactivo de Python para crear la salida):Este solo usa i para 55 caracteres:
Este evita usar i para 104 caracteres:
EDITAR: gran avance !!! Estaba pensando que el uso de eval (o incluso exec) era un poco tramposo y no realmente en el espíritu de la competencia. De todos modos, al rastrear a través de las construcciones, encontré una manera de obtener la función de impresión sin usar i. Así que aquí está el programa evitar-i (y o) para 68 caracteres:
Pero debido a que eso también evita o, esto se puede combinar con uno que solo evita a, e, u por 49 caracteres:
fuente
vars(vars().values()[0]).values()[47]Rubí
1961644447fuente
pgenera comillas alrededor del alfabeto?p xes equivalente a llamarputs str.inspect, lo que resulta en comillas circundantes.$><<, así que +1 por eso y felicidades; su versión es mucho mejorRuby, 22
No hay letras en absoluto :)
fuente
VBA: 76 fuerza bruta, 116 sin 'trampa' (98 si las nuevas líneas son aceptables en la salida)
Funciones estándar
Gracias a la verbosidad de VBA, no creo que esto se pueda hacer sin 'E' o 'U' en un módulo de código estándar ...
Funciones inmediatas
Ejecutando con la suposición de mellamokb, aquí está sin la declaración de función (omitiendo
SUByFUNCTION) ( 116 caracteres , 98 omitiendo si las nuevas líneas son aceptables en la salida):Lo siguiente no utiliza ni 'e' ni 'a' ( 43 caracteres , formateados para ejecutarse en la ventana inmediata):
El siguiente no utiliza ni 'i' ni 'a' ni 'u' ( 33 caracteres , formateados para ejecutarse en la ventana inmediata):
El siguiente no utiliza ni 'a' ni 'o' ni 'u' ( 40 caracteres , formateados para ejecutarse en la ventana inmediata):
Si se permiten caracteres de nueva línea en la salida, los ejemplos anteriores pueden ser más cortos:
( 37 caracteres )
( 27 caracteres )
( 34 caracteres )
Fuerza bruta
Corriendo con la respuesta de Ruby de w0lf
( 76 caracteres , formateados para ejecutarse en la ventana inmediata):
fuente
Sub..End Sublado, ya que la mayoría de los otros programas no incluyen la definición de funciones.Sub:) :)printa?ya que eso funciona en la ventana inmediata.Rebmu : 15 caracteres
Leer Rebmu siempre requiere un poco de tranquilidad para comenzar:
Entonces ayuda a expandir las abreviaturas:
Sería más obvio usar un carácter literal para el predecesor de minúscula a:
Pero eso no se "arruina", por lo que convertir una palabra literal en un carácter pasa por el mismo propósito. Lo que me gusta de él, como con la mayoría de Rebmu, es que tiene el espíritu de un programa sensible a pesar de la compresión. (La respuesta de Golfscript es más corta pero no se corresponde con la forma en que un programador normalmente pensaría al codificar).
fuente
<> <(Pez) - 22 caracteres
Debido a que <> <usa la 'o' para imprimir un personaje, este desafío parece imposible de hacer. Afortunadamente, los peces pueden cambiar su propio código en tiempo de ejecución. Esto me permitió agregar las instrucciones de impresión al código.
Este código no usa ninguna de las vocales:
Puedes ejecutar el código aquí
fuente