Imprime el alfabeto sin usar cada vocal


72

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):


44
@ w0lf: No, dice "hasta 5 programas" y "duración de todos los programas", que leí como "solo puede haber un programa y su longitud cuenta en este caso".
schnaader

9
@PeterTaylor: ¿No crees que tener que evitar usar vocales en tu sintaxis es un desafío único? Como programador de JS, es especialmente interesante :)
mellamokb

2
¿Son aceptables las nuevas líneas en la salida (es decir, una por carácter)? Puedo acortar parte de mi código si ese es el caso ...
Gaffi

2
¿Se permite la salida en mayúsculas?
Erik the Outgolfer

2
Soy el OP. Mayúsculas no permitidas.
shamp00

Respuestas:


48

Golfscript - 8 caracteres

123,97>+

8
maldición, realmente no puede vencer a golfscript en términos de concisión ...
Patrick Oscity

18
Dicho esto, la legibilidad apesta como una locura.
Andrew Gray

55
No es tan malo;) generar una lista de 123 números, eliminar aquellos que no sean mayores que 97, coaccionarlos (matriz de números) a una cadena.
McKay

3
Usar en su 91,65>+lugar.
Erik the Outgolfer

31

Brainfuck, 38 caracteres

++++++[->++++<]>[->+>++++<<]>++[->+.<]

Por supuesto, no hay vocales (ni ninguna otra letra) en la sintaxis de brainfuck .


2
Punto válido allí! ;)
WallyWest

3
30 bytes:++[[<+++>->++++<]>]<<<<++[->+.<]
primo

23

PHP, 31 bytes

No a, e, i, o, u:

<?=~žœ›š™˜—–•”“’‘ŽŒ‹Š‰ˆ‡†…;

La cadena binaria después de la tilde tiene la siguiente representación hexadecimal:

\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

Dado que hay un marcador de idioma, también puedo enviar este:

Ruby (v1.8) 18 bytes

$><<[*97.chr..'z']

No estoy seguro de entender cómo funciona esto. ¿Podría obtener una explicación?
Sr. Llama

Cuando se aplica a una cadena, el operador ~ invierte todos los bits. Aquí he invertido abc ... xyz. Debido a que no hay caracteres de símbolos (o espacios en blanco) en la cadena binaria, las comillas tampoco son necesarias.
primo

1
Es posible que desee especificar una codificación para lo que tiene allí.
Joey

1
iso-8859-1. Se eliminaron tres caracteres 'no imprimibles' cuando se publicó, por lo que incluí el hexadecimal.
primo

2
Bonita y probablemente la versión PHP más corta posible. Un comando para generar el archivo: 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.
axiac

16

Rubí ( 24 22)

Editar: los paréntesis se pueden omitir, 2 caracteres menos:

$><<'%c'*26%[*97..122]

24 caracteres en Ruby:

$><<('%c'*26)%[*97..122]

Cómo funciona

$>es un alias para $stdouto STDOUT. Puedes escribirle usando el <<operador. El término '%c'*26repite la cadena '%c'26 veces. El %operador se define en String como un alias para sprintf, por lo que str % vales equivalente a escribir sprintf(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á!


Muy agradable. Estaba buscando una manera de usar <<pero me había olvidado $>.
Mark Reed

1
Ni siquiera lo sabía $>antes, pero supuse que tenía que haber un alias variable en dólares para $stdoutque nadie pueda recordar :)
Patrick Oscity

21 caracteres: $><<[*"`".."z"][1,26](nota: esto solo funciona en Ruby 1.8)
Ventero

@Ventero no solo en Ruby 1.8, en Ruby 1.9.2 también funciona. Pero usar p [*"".." z "] [1,26]` es aún más corto.
Hauleth

@Hauleth: No, ejecutarlo en 1.9 no genera la salida correcta, ya que en 1.9 Array#to_ses igual que Array#inspect, mientras que en 1.8 es Array#joinasí, en 1.9 la salida es en ["a", "b", "c", "d", "e", ...]lugar de abcdef.... Por la misma razón, pno se puede usar (invoca inspectsus argumentos, en lugar de to_s).
Ventero

16

Pyth , 1 personaje

G

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.


3
Ninja'd me por 3 años ...
Stan Strum

15

JavaScript (100)

No 'aeou':

this['\x61l\x65rt']('\x61bcd\x65fghijklmn\x6fpqrst\x75vwxyz')

No yo':

alert('abcdefgh\x69jklmnopqrstuvwxyz')

+1 Mejora agradable en mi respuesta :) Pensé en usar los \x##códigos pero no estaba seguro de si eran válidos en JavaScript.
mellamokb

¿Por qué las alertas en absoluto? en un terminal js, los objetos se repiten automáticamente. ('\ x61bcd \ x65fghijklmn \ x6fpqrst \ x75vwxyz') @ 42 caracteres.
antony.trupe

3
@ antony.trupe, para el golf de código, IO se realiza generalmente a través de los mecanismos de IO incorporados en el lenguaje (o complementos comunes). Para JS esto es por lo general alert, confirm, prompt, console.log, y document.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.
zzzzBov

produce resultados (según la definición que uso de todos modos) en la consola de Google Chrome, pero reconozco el problema; Para empezar, es una restricción arbitraria.
antony.trupe

@ antony.trupe, en un lenguaje como PHP, podría salirse con la suya usando un literal, porque así es como realiza IO.
zzzzBov

15

K, 9

_26#.Q.b6

K, 10

"c"$97+!26

K, 14

.:".Q.","c"$97

2
y una manera tonta de hacerlo sin letras (12 caracteres):(@$`)$97+!26
Aaron Davies

1
La forma K5 es casi su segunda solución, pero $toma símbolos en lugar de cadenas para controlar el tipo convertido en: `c $ 97 +! 26
JohnE

15

J, 26 23 17 16 caracteres

Despué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.y u:.

2(3!:4)96+#\26$1

Previamente:

a.{~96++/\26$1
u:97+i.26

Gracias a randomra por el #\truco.


Buena solución! Se las arregló para acortar con 1 carácter usando en #\ lugar de +/\ .
randomra

55
Sal de mi cajón de ropa interior
Joe

14

R, 17 + 19 = 36 caracteres

no ae (17):

intToUtf8(97:122)

no iou (19):

cat(letters,sep="")

12

Golpe (38)

No hay vocales en absoluto.

/*/*/*ntf "/*/?ch? {\x61..z}"|/*/b?sh

Este programa falla en mi sistema, porque / * / b? Sh no existe. Tengo / usr / local / bin / bash, no / bin / bash.
kernigh

2
Buen uso de globbing shell!
Caracol mecánico

@kernigh[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
Stan Strum

Sería mejor si /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}.
kernigh

11

C, 90 88 84 caracteres

Compilar usando gcc -nostartfiles

b;_exit(){for(;b<26;)printf("%c",b+++97);}    // 42 chars, works for a, u
b;_start(){putchar(b+++97)>121?:_start();}    // 42 chars, works for e, i, o

_starty _exitson una buena manera de moverse main. Pero si una línea de compilación no estándar está bien, ¿por qué no -DX=main?
ugoren

44
De alguna manera, se -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 nombre main, pero elimina la restricción de que debe haber una mainfunción (llamada _start). Por otro lado, usar -nostartfilesse siente un poco como hacer trampa, especialmente porque contiene 4 de las 5 letras "malas" :)
schnaader

Es una pendiente resbaladiza ... La distancia desde -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.
ugoren

¿No hay forma de definir la función principal como "mn", por ejemplo?
Neil

@Neil, solo haciendo algo como -Dmn=main. La función de CA debe tener una mainfunción a menos que se utilice una opción no estándar como -nostartfiles.
Matthew Flaschen


9

Ruby, 20 caracteres

$><<[*97.chr..?z]*''
  • 97.chr es una forma elaborada de decir 'a'
  • .. especifica un rango
  • ?z es una forma más corta de decir "z"
  • las [*range]causas de la gama de splat al que es valores en una matriz
  • *''es lo mismo que join(''); pega todos los valores de la matriz juntos.
  • $><< Perlicismo: imprimir en stdout.

Este código no parece funcionar. ?zno es una abreviatura para 'z', sino más bien para 122. Esto, sin embargo, funciona para 18 bytes:$><<[*97.chr..'z']
primo

Que funciona en Ruby 1.9.
steenslag

1
Descargué 1.9.3 ... y tienes razón. ¿Por qué iban a cambiar algo así? Puedo ver por qué anarchy golf sigue funcionando 1.8.7. De todos modos, la solución de 18 bytes funciona para v1.8.7-
primo

2
(4 años más tarde ...) Se puede reemplazar 97.chrcon el ?\x61de -1 bytes.
Jordania

9

dc: 18 17 caracteres

97[dP1+dBD>m]dsmx

Y allí murió un personaje valiente.


Lo dudo mucho. Lo estoy envolviendo y no veo ninguna forma de acortarlo. Terminé con exactamente la misma solución, excepto que utilicé xpara el registro, lo que hace que la solución mía sea más ofuscada.
Hynek -Pichi- Vychodil

3
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 es B*10+D=11*10+13=123='{', y no 0xBD.
Fors

Oh, agradable glich ;-)
Hynek -Pichi- Vychodil

9

Powershell, 75 62 caracteres

Editar: Se utiliza -f (String.Format) y la indexación de matrices para reducir significativamente la longitud del código.

'{0}bcd{1}fgh{2}jklmn{3}pqrst{4}vwxyz'-f"$(1|gm)"[8,10,0,5,31]

Cómo funciona

gmes un alias para get-members, por lo que 1|gmdevuelve miembros del valor 1, que es del System.Int32tipo:

PS C:\> 1|gm
   TypeName: System.Int32
Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value)
Equals      Method     bool Equals(System.Object obj), bool Equals(int obj)
GetHashCode Method     int GetHashCode()
...

"$(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) ..."


2
Sin embargo, esto no es estable si MS agrega miembros a System.Int32 :-)
Joey

Creo que tendría que ser ($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"que también tiene 75 caracteres :)
Danko Durbić

Argh, cierto. Pesqué el artículo equivocado de mi historia. Lo siento.
Joey

En realidad, si lo reemplazas ''+$(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!
Danko Durbić

2
Usé -f (String.Format) y la indexación de matrices para reducir significativamente la longitud del código.
Tim Lewis


8

Haskell, 12

['\97'..'z']

¿O es esta trampa? :)


Es cierto que no sé mucho sobre Haskell, pero me da este error:Parse error: naked expression at top level
primo

1
Lo ejecutas en el intérprete
RobAu

7

MATLAB, 12 + 20 = 32 caracteres

No eiou (12):

char(97:122)

No aeou (20)

fprintf('%s',97:122)

7

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).

`\160\145\162\154\40\55\145\40\42\160\162\151\156\164\40\123\124\104\105\122\122\40\141\56\56\172\42`

=> Resultado: abcdefghijklmnopqrstuvwxyz

A diferencia de la solución PHP de "aspecto similar" , este es un programa real . El programa decodificado lee:

perl -e "print STDERR a..z"

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:

my $s = q{perl -e "print STDERR a..z"};
my $cmd = eval(
       '"' . join('', map sprintf("\\%o",ord $_), split //, $s) . '"'
       );

y la codificación evaluada es el programa publicado (dentro de los backticks):

"\160\145\162\154\40\55\145\40\42\160\162"
"\151\156\164\40\123\124\104\105\122\122"
"\40\141\56\56\172\42"

Saludos

rbo


8
Podría acortar esto a 44 caracteres codificando solo las vocales :)
marinus

7

Perl 5, 22 caracteres

(1) solo contiene ay e, 10 caracteres (requiere 5.10+, se ejecuta desde la línea de comandos):

-Esay+a..z

(2) solo contiene 'i', 12 caracteres:

print v97..z

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.


La opción '-E' está bien, creo, pero generalmente los 2 caracteres '-E' se agregan a la longitud total de los caracteres.
Gareth

@gareth: la -E reemplaza a -e por ejecutar una línea. Si está ejecutando un programa desde un archivo, entonces está atascado con el use, aunque podría reemplazarlo con la opción de línea de comando -M5.01y eliminar dos caracteres más.
Mark Reed

Estaba pensando en la regla con la -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.
Gareth

podría reemplazar su printdeclaración con diepara rasurar 2 caracteres
ardnew

chr 97..zpuede reemplazarse v97..zpor 3 bytes.
primo

7

APL (Dyalog) ( 11 13)

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):

⎕UCS 96+⍳26

(Eso es [quad]UCS 96+[iota]26)

Solo A:

⎕A

2
Ues una vocal ...
Tobia

@Tobia: y a alguien le tomó más de un año ver eso (incluyéndome a mí). Supongo que Iota también es una vocal ahora que lo estoy pensando. Arreglado.
marinus

El símbolo funcional APL iota (U + 2373) no se considera una letra en Unicode y, por lo tanto, no puede ser una vocal. Tenga en cuenta que es diferente de la minúscula griega iota (U + 03B9).
ngn

7

Pitón 2, 83

No a , i , o o u ; 47 :

x=97;s='';exec"s+=chr(x);x+=1;"*26+"pr\x69nt s"

No e ; 36 :

print"abcd\x65fghijklmnopqrstuvwxyz"

6

Python 2, 175 caracteres

Nota: imprime a salida a diferencia de la respuesta anterior de Python .

Utiliza 'e', ​​pero no a, i, o, u - 63 61 59 65 (corrige el imovimiento equivocado a minúsculas) 115 caracteres (elimina espacios).

exec('fr%cm sys %cmp%crt*\nf%cr x %cn r%cnge(97,123):std%c%ct.wr%cte(chr(x)),'%(111,105,111,111,105,97,111,117,105))

(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) - 61 60 caracteres

import string
print string.__dict__['low%crcas%c'%(101,101)]

1
Su primera solución usa la letra 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.
BioGeek

1
exec('fr%cm sys yo mp%crt*\nf%cr ...
Gareth

BioGeek y @Gareth: mis habilidades manuales de detección de vocales apestan. Gracias por señalarlo; pero tenía una e adicional escrita como '% c', así que al final se iguala.
dr jimbob

Puede eliminar los paréntesis deexec('...')
mbomb007

5

JavaScript (154)

(1) Solo contiene i(99 caracteres):

t=this;s=-t+t+t.b;z=s[1]+'bcd'+s[7]+'fghijklmn'+s[4]+'pqrst'+s[21]+'vwxyz';t[s[1]+'l'+s[7]+'rt'](z)

(2) Solo contiene aeou(55 caracteres):

t=0;s=''+t.b;alert('abcdefgh'+s[5]+'jklmnopqrstuvwxyz')

Demostración: http://jsfiddle.net/SvN5n/


$("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 se aeouiutiliza en el código. Funciona en el navegador Chrome.
Esc Điệp

5

Pitón 159 117

Como 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:

print"%cbcd%cfghijklmn%cpqrst%cvwxyz"%(97,101,111,117)

Este evita usar i para 104 caracteres:

eval("sys.stdout.wr%cte"%105,{'sys':eval("__%cmport__('sys')"%105)})("%c"*26%tuple(range(97,123))+"\n")

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:

vars(vars().values()[0])['pr%cnt'%105]("%c"*26%tuple(range(97,123)))

Pero debido a que eso también evita o, esto se puede combinar con uno que solo evita a, e, u por 49 caracteres:

print"%cbcd%cfghijklmnopqrst%cvwxyz"%(97,101,117)

Puedes deshacerte de la compatibilidad y obtener un personajevars(vars().values()[0]).values()[47]
ugoren

5

Rubí 196 164 44 47

$><<"\x61bcd\x65fgh\x69jklmn\x6Fpqrst\x75vwxyz"

¿Es esta una respuesta válida, ya que pgenera comillas alrededor del alfabeto?
Mark Reed

Estoy de acuerdo p xes equivalente a llamar puts str.inspect, lo que resulta en comillas circundantes.
Patrick Oscity

@padde ambos tienen razón; cambiado
Cristian Lupascu

1
@padde Usé tu $><<, así que +1 por eso y felicidades; su versión es mucho mejor
Cristian Lupascu


5

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 ...

  • " E nd"
  • "F u nción"
  • "S u b"

Funciones inmediatas

Ejecutando con la suposición de mellamokb, aquí está sin la declaración de función (omitiendo SUBy FUNCTION) ( 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):

b=65:Do:z=z+Chr(b):b=b+1:Loop Until b=91:?z

El siguiente no utiliza ni 'i' ni 'a' ni 'u' ( 33 caracteres , formateados para ejecutarse en la ventana inmediata):

For b=65 To 90:z=z+Chr(b):Next:?z

El siguiente no utiliza ni 'a' ni 'o' ni 'u' ( 40 caracteres , formateados para ejecutarse en la ventana inmediata):

b=65:While b<91:z=z+Chr(b):b=b+1:Wend:?z

Si se permiten caracteres de nueva línea en la salida, los ejemplos anteriores pueden ser más cortos:

( 37 caracteres )

b=65:Do:?Chr(b):b=b+1:Loop Until b=91

( 27 caracteres )

For b=65 To 90:?Chr(b):Next

( 34 caracteres )

b=65:While b<91:?Chr(b):b=b+1:Wend

Fuerza bruta

Corriendo con la respuesta de Ruby de w0lf

( 76 caracteres , formateados para ejecutarse en la ventana inmediata):

?Chr(65)&"BCD"&Chr(69)&"FGH"&Chr(73)&"JKLMN"&Chr(79)&"PQRST"&Chr(85)&"VWXYZ"

1
Creo que sería justo dejar de Sub..End Sublado, ya que la mayoría de los otros programas no incluyen la definición de funciones.
mellamokb

@mellamokb Bueno, eso me hace sentir mejor. Prepararé algunos ejemplos para agregar a esto.
Gaffi

2
Solo piense en ello como "código que ejecuta en la ventana inmediata" :)
mellamokb

2
Bueno, si tiene dudas, simplemente llámelo VBScript, que se puede incluir en un archivo sin necesidad de Sub :) :)
Joey

Se corrigió un montón de espacios innecesarios, cambiado printa ?ya que eso funciona en la ventana inmediata.
Gaffi

5

Rebmu : 15 caracteres

Ctc'`L26[pn++C]

Leer Rebmu siempre requiere un poco de tranquilidad para comenzar:

c: tc '` l 26 [pn ++ c]

Entonces ayuda a expandir las abreviaturas:

c: to-char-mu '`
loop 26 [
    prin ++ c
]

Sería más obvio usar un carácter literal para el predecesor de minúscula a:

c: #"`"
loop 26 [
    prin ++ c
]

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).


5

<> <(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:

'`78'+11pv
:X:'z'=?;>1+

Puedes ejecutar el código aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.