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$stdout
oSTDOUT
. Puedes escribirle usando el<<
operador. El término'%c'*26
repite la cadena'%c'
26 veces. El%
operador se define en String como un alias parasprintf
, por lo questr % val
es equivalente a escribirsprintf(str,val)
. El carácter de formato%c
se 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$stdout
que 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_s
es igual queArray#inspect
, mientras que en 1.8 esArray#join
así, en 1.9 la salida es en["a", "b", "c", "d", "e", ...]
lugar deabcdef...
. Por la misma razón,p
no se puede usar (invocainspect
sus 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/sh
es 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 -nostartfiles
fuente
_start
y_exit
son una buena manera de moversemain
. Pero si una línea de compilación no estándar está bien, ¿por qué no-DX=main
?-DX=main
siente 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 main
en el código fuente que sería claramente inválido. Mientras-nostartfiles
que no es una forma de cambiar el nombremain
, pero elimina la restricción de que debe haber unamain
función (llamada_start
). Por otro lado, usar-nostartfiles
se siente un poco como hacer trampa, especialmente porque contiene 4 de las 5 letras "malas" :)-nostartfiles
hasta-DX=main
es 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 unamain
función a menos que se utilice una opción no estándar como-nostartfiles
.Golfscript, 10 caracteres
fuente
Ruby, 20 caracteres
97.chr
es una forma elaborada de decir 'a'..
especifica un rango?z
es 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
?z
no es una abreviatura para'z'
, sino más bien para122
. Esto, sin embargo, funciona para 18 bytes:$><<[*97.chr..'z']
97.chr
con el?\x61
de -1 bytes.dc:
1817 caracteresY allí murió un personaje valiente.
fuente
x
para 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
gm
es un alias paraget-members
, por lo que1|gm
devuelve miembros del valor1
, que es delSystem.Int32
tipo:"$(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
aeiou
usadofuente
Haskell, 12
¿O es esta trampa? :)
fuente
Parse error: naked expression at top level
MATLAB, 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
a
ye
, 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..z
para 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.01
y eliminar dos caracteres más.-p
opción donde se agregan 2 caracteres al conteo. Sin embargo, al observar esta metapregunta, debería poder usarla-M5.010
de forma gratuita si esa opción ayuda a acortar su código.print
declaración condie
para rasurar 2 caractereschr 97..z
puede reemplazarsev97..z
por 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
U
es 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 eli
movimiento 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 sys
yomp%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 seaeoui
utiliza 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
print
osys.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
p
genera comillas alrededor del alfabeto?p x
es 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
SUB
yFUNCTION
) ( 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 Sub
lado, ya que la mayoría de los otros programas no incluyen la definición de funciones.Sub
:) :)print
a?
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