Elimine las vocales sin utilizar demasiados caracteres diferentes.


10

El desafío es eliminar las vocales (a, e, i, o, u) de la cadena de STDIN (sí, lo sé, simple). Puede esperar que su programa no se ejecute con ningún argumento argv.

Ejemplo:

This program will remove VOWELS.
So we can now speak without them.

Se cambia a:

Ths prgrm wll rmv VWLS.
S w cn nw spk wtht thm.

Hay una trampa. La entrada ganadora se decide basándose en el número de bytes diferentes. Por ejemplo a abtiene tres bytes diferentes ( a, by el espacio). Si dos o más entradas tendrán la misma cantidad de bytes diferentes, entonces el retroceso se realiza en número de bytes para esas entradas.


99
Un trabajo para el lenguaje de
espacios en blanco

¿Qué pasa con la entrada como Renée’s naïveté? Despojado de vocales, eso debería ser, por supuesto, Rn’s nvtcomo salida. Parece que estos enfoques son bastante ingenuos si me preguntas. :)
tchrist

Si elimina é, es posible que también desee eliminar y.
usuario desconocido

44
@tchrist, lee la pregunta. Dice eliminar a, e, i, o, u. Estás fuera de tema, por favor déjalo.
stand

1
@tchrist: Especialmente el desafío no decía "todas las vocales" y enumeraba lo que deberíamos considerar como removible.
usuario desconocido

Respuestas:


2

Espacio en blanco binario (2 caracteres distintos, 324 caracteres en total)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

donde S, T, L denota espacio, tabulación, salto de línea, respectivamente. (Obviamente obtenido al convertir la respuesta de espacios en blanco de "breadbox" en espacios en blanco binarios; esta publicación probablemente debería ser un comentario a su respuesta, pero es demasiado larga).

El espacio en blanco binario es un espacio en blanco convertido a un lenguaje de código de prefijo en todas partes usando TS en lugar de T y usando TT en lugar de L; por ejemplo, la instrucción BWS para empujar -5 en la pila es SSTSTSSTSTT en lugar de SSTTSTL, etc. Enlace: Un traductor en ambos sentidos para un lenguaje arbitrario de 3 símbolos y sus versiones de código de prefijo binario .

NB: Sería sencillo diseñar un verdadero intérprete bit a bit para los programas de espacio en blanco binario considerados como secuencias de bits , en lugar de secuencias de caracteres (por ejemplo, utilizando valores de 0,1 bits en lugar de caracteres S, T, respectivamente). Lo anterior sería un programa de 324 bits que requiere 41 bytes de almacenamiento.


13

Brainfuck, 8 distintos (2121 en total)

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

Los personajes: distict <>+-[],.. Trabaja con intérpretes que usan -1para EOF.

$ echo '
Este programa eliminará VOCALES.
Entonces ahora podemos hablar sin ellos.
'| bf vocal-rm.bf

Este programa wll rmv VWLS.
S w cn nw spk wtht thm.


1
Según los requisitos establecidos, esta es la mejor respuesta; pero OTOH es lo peor porque usa todos los caracteres sintácticamente significativos en su lenguaje.
dan04

3
@tchrist: Asume ASCII. De todos modos, solo {a, e, i, o, u} están en los requisitos.
Jon Purdy

1
Así que está bien para convertir Renée’s naïvetéen Rń’s n̈vt́, entonces? Eso no me parece correcto, pero si tú lo dices. Puesto que no puede asumir ninguna normalización, es perfectamente razonable que Renée’s naïvetées realmente "Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"- o si lo prefiere números mágicos, "Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}". Si eliminas las vocales sin sus diacríticos concomitantes, obtienes tonterías extremas. ¡Bienvenido al Brave New Millennium! :)
tchrist

1
¡Usa Unary, solo tendrías un personaje distinto! :-P esolangs.org/wiki/Unary
marinus

3
@marinus, he convertido esto a Unary y solo necesitaba 1.166921663690E+1824bytes para almacenarlo (he subido el número exacto a pastebin, no cabe en este comentario). Me pregunto cuánto tiempo llevaría enviarlo a este sitio.
Konrad Borowski

10

Espacio en blanco, 3 puntos (218 caracteres)

Sabías que se acercaba.

↲___↲____↲⇥↲⇥_____↲___⇥_____⇥↲___⇥___⇥_⇥↲___⇥__⇥__⇥↲___⇥__⇥⇥⇥⇥↲___⇥_⇥_⇥_⇥
↲___⇥⇥____⇥↲___⇥⇥__⇥_⇥↲___⇥⇥_⇥__⇥↲___⇥⇥_⇥⇥⇥⇥↲___⇥⇥⇥_⇥_⇥↲↲___⇥↲_↲_↲⇥_⇥↲___
_↲⇥⇥⇥⇥__⇥↲⇥_↲↲_↲_⇥↲↲__↲↲⇥__↲↲_↲↲↲__⇥↲____↲⇥⇥⇥_↲_↲⇥___↲⇥↲__↲_↲_↲↲____↲↲↲↲

(_ = espacio, ⇥ = tabulador, ↲ = nueva línea)

Aquí está el script codificado en base64:

CiAgIAogICAgCgkKCSAgICAgCiAgIAkgICAgIAkKICAgCSAgIAkgCQogICAJICAJICAJCiAgIAkg
IAkJCQkKICAgCSAJIAkgCQogICAJCSAgICAJCiAgIAkJICAJIAkKICAgCQkgCSAgCQogICAJCSAJ
CQkJCiAgIAkJCSAJIAkKCiAgIAkKIAogCgkgCQogICAgCgkJCQkgIAkKCSAKCiAKIAkKCiAgCgoJ
ICAKCiAKCgogIAkKICAgIAoJCQkgCiAKCSAgIAoJCiAgCiAKIAoKICAgIAoKCgo=

Y aquí está el programa escrito en forma de ensamblador visible:

ioloop: charin  0
        push    0, 'A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'
ckloop: dup
        jz      out
        get     0
        sub
        jz      skip
        jump    ckloop
skip:   jz      ioloop
        jump    skip
out:    get     0
        dup
        jz      done
        charout
        jump    ioloop
done:   exit

Huele a Acme :: Bleach para mí. :)
tchrist

Cuando convierto su programa "simbólico" en Whitespace, tiene errores de sintaxis fatales.
res

Eso es extraño. ¿Recordó eliminar las nuevas líneas reales antes de realizar la conversión? Debería incluir una codificación base64 del script real.
breadbox

1
Sí, lo hice: su versión base64 se decodifica exactamente con lo que estoy usando. Aquí hay una versión "STL" (con S, T, L codificación espacial, Tab, salto de línea, respectivamente): LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL. Parece que dos problemas (entre otros) son que está intentando insertar un 0 en la pila usando en SSSLlugar de SSSSL, y también está tratando de definir una etiqueta "vacía" usando LSSLfor skip.
res

1
Perdón por el retraso ... Acabo de confirmar que, de hecho, la versión 0.3 (binario de Linux) de Edwin Brady del intérprete de Whitespace sí ejecuta su programa sin quejas. He estado usando la implementación de Ruby (disponible en la misma página), que no permite la sintaxis que estás usando.
res

8

SED (10 bytes distintos, 13 en total)

s/[aeIou]//gI

Uso de la muestra:

echo The quick brown fox jumps over the lazy dOg. | sed -e s/[aeIou]//gI

salidas:

Th qck brwn fx jmps vr th lzy dg.

Solo me pregunto, ¿por qué Ies mayúscula? Funciona bien cuando los Icaracteres están en minúsculas.
Konrad Borowski

2
@ GlitchMr Acabo de hacer eso para enfatizar que el Ipersonaje se reutiliza.
Cristian Lupascu

1
@tchrist No creo que el OP mencionara las vocales francesas en su publicación. Además, me gusta escribir programas ingenuos. :-)
Cristian Lupascu

3
Estoy bastante seguro öy ïson mal utilizados en su ejemplo y los otros dos son consonantes. Aún así, creo que tienes un punto. Pero de esta manera podemos terminar apoyando también a ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮; quizás incluso ,, slǝʍoʌ uʍop ǝpısdn ,, :-)
Cristian Lupascu

1
@ w0lf, esos usos öy ïuna vez se encontraron en inglés, aunque ahora casi han desaparecido.
Joe

7

C, 22 20 19 caracteres distintos.

Cartas necesarios para main, putchar, getchar= 12.
Puntuacion - (){};= 5.
Los operadores - &-= 2.

i;ii;
p(c){
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii)&&
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii-i-i-i-i)&&
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii-ii-(-i-i-i))&&
    (c&ii-(-ii-ii))-(-ii-ii-ii-ii-ii-ii-ii-i-i)&&
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii-ii-ii-(-i-i))&&
    putchar(c);
}
a(c){c-i&&n(p(c));}
n(c){a(getchar());}
main(){
    n(i---ii---ii---ii---ii---ii---ii---ii---ii---ii---ii---ii---i);
}

maininvoca un comportamiento indefinido (demasiado --en una línea).
No me importa el valor de la expresión, y disminuye iiel número correcto de veces.
Se puede arreglar fácilmente separando los decrementos con ;. Pero es mucho más agradable como es.

Versión anterior, 20 caracteres: en
realidad 21, porque no me di cuenta de que algunos espacios son significativos y deben contarse, pero se pueden reemplazar con paréntesis fácilmente.

ii;iii;c;a;
main(i){
    i=c;i-=--c;
    ii=-i-i-i-i-i-i-i-i-i-i-i;
    iii=i-ii-ii-ii-ii-ii-ii-ii-ii-ii-ii;
    -(c=a=getchar())-i&&main(
        (c&=ii- -ii- -ii)- -            a&&
        -ii-ii-ii-ii-ii-ii-  i-         c&&
        -ii-ii-ii-ii-ii-ii- -i- -i- -i- c&&
        iii- -ii- -ii- -ii-  i-i-i-i-i- c&&
        iii- -ii- -ii- -ii- -i-         c&&
        iii- -ii- -ii-       i-i-i-i-   c&&
        putchar(a));
}

Quizás pueda mejorarse aún más compilando gcc -nostartfilesy renombrando maina _start. minse eliminan (después de un cambio de nombre variable), se _sagregan. Pero luego necesito usar exit(), que agrega 3 caracteres.
En lugar de _start, se puede usar cualquier nombre, y funciona en Linux. Esto permite bajar a 18 caracteres, pero es muy poco estándar.


6

Perl: 8 o 10 caracteres distintos

s/// solución: 10 distintos, 13 en total

La técnica (supuesta; ver más abajo) sed siempre funciona también en perl, y produce el número de nombre de caracteres distintos (10):

s/[aeiou]//gi

Por ejemplo:

$ echo 'This program will remove VOWELS. So we can speak without them.' | 
  perl -ple 's/[aeiou]//gi'
Ths prgrm wll rmv VWLS. S w cn spk wtht thm.

Son 10 caracteres distintos, como lo demuestra:

$ echo 's/[aeiou]//gi' | perl -nle '@s{split//}=(); print scalar keys %s'
10

El problema con la solución de sed es que su /ies no parte de POSIX sed, y por lo tanto no es portátil:

$ echo 'This program will remove VOWELS. So we can speak without them.' | 
  sed -e 's/[aeiou]//gi'
sed: 1: "s/[aeiou]//gi": bad flag in substitute command: 'i'

Eso se ejecuta en un sistema OpenBSD. Por el contrario, debido a /ique siempre es parte del perl estándar, puede contar con que siempre esté allí. A diferencia de sed.

Si desea incluir "y" en la lista de vocales, es, por supuesto, una mayor si utiliza la misma técnica:

$ echo 'This nifty program remove any VOWELS. So we easily can speak without them.' | 
  perl -ple 's/[aeiouy]//gi'
Ths nft prgrm rmv n VWLS. S w sl cn spk wtht thm.

$ echo 's/[aeiouy]//gi' | perl -nle '@s{split//}=(); print scalar keys %s'
11

Y ahora son 14 caracteres en total.

tr[][] solución: 8 distintos 10 en total

También puede usar tr///para eliminar cualquier cosa que coincida. Perl incluso puede usar el y///alias de sed para tr:

y/aeiou//d

que ahora tiene 8 caracteres distintos, pero no funciona en mayúsculas. Termina teniendo que agregar 5 caracteres más para hacer frente a los mapas de casos:

$ echo 'y/aeiouAEIOU//d' | perl -nle '@s{split//}=(); print scalar keys %s'
13

y, por supuesto, ahora son 15 en total.

Sin embargo, agregar "y" a la mezcla como vocal no aumenta el número de caracteres distintos como lo hizo con la s///versión:

$ echo 'This nifty program remove any VOWELS. So we easily can speak without them.' | 
  perl -ple 'y/aeiouy//d'
Ths nft prgrm rmv n VOWELS. S w sl cn spk wtht thm.

Así que sigue siendo solo el original 8 de un total de 11:

$ echo 'y/aeiouy//d' | perl -nle '@s{split//}=(); print scalar keys %s'
8

EDITAR : Contabilidad para diacríticos

¿Y qué hay de las entradas como Renée’s naïveté? La salida correcta debería ser, por supuesto Rn’s nvt. A continuación, le indicamos cómo hacerlo, utilizando el /rindicador de v5.14 para s///:

$ echo 'Renée’s naïveté' |
  perl5.14.0 -CS -MUnicode::Normalize -nle 'print NFD($_)=~s/[aeiou]\pM*//rgi'
Rn’s nvt

Eso es 27 caracteres distintos:

$ echo 'print NFD($_) =~ s/[aeiou]\pM*//rgi' | 
  perl -nle '@s{split//}=(); print scalar keys %s'
27

Se puede recortar de que a 26 si se puede garantizar que se está ejecutando al menos v5.10 mediante el canje de la printde say:

$ echo 'Renée’s naïveté' |
  perl -Mv5.14 -CS -MUnicode::Normalize -nlE 'say NFD($_) =~ s/[aeiou]\pM*//rgi'
Rn’s nvt

$ echo 'say NFD($_) =~ s/[aeiou]\pM*//rgi' | 
  perl -nle '@s{split//}=(); print scalar keys %s'
26

Y puede bajarlo a 22 si no le importa mover los diacríticos en lugar de eliminarlos:

$ echo 'Renée’s naïveté' |
  perl -Mv5.14 -CS -MUnicode::Normalize -nlE 'say NFD($_) =~ s/[aeiou]//rgi'
Rń’s n̈vt́

Lo cual es ... interesante de ver, por decir lo menos. :) Aquí está su cuenta distinta:

$ echo 'say NFD($_) =~ s/[aeiou]//rgi' | 
  perl -nle '@s{split//}=(); print scalar keys %s'
22

¡Buena suerte con cualquier otro idioma para tratar adecuadamente los signos diacríticos con menos caracteres que este!


1
ɢᴏᴏᴅ ᴘₒᵢⁿᵗ αβουτ 𝐝𝐢𝐚𝐜𝐫𝐢𝐭𝐢𝐜𝐬 𝑦𝑜𝑢 𝒈𝒐𝒕 𝓽𝓱𝓮𝓻𝓮, 𝒷𝓋𝓉 𝔥𝔬𝔴 𝕒𝕓𝕠𝕦𝕥 𝘀𝘁𝘂𝗳𝗳 𝚕𝚒𝚔𝚎 𝕋ℍ𝕀𝕊?
dejó de girar en sentido antihorario

@leftaroundabout La mayor parte de eso se soluciona al comprometerse con una descomposición de NFKD. Los griegos no cuentan, aunque son parecidos, y las cápsulas pequeñas no se descomponen en asiduos. El resultado es "ɢᴏᴏᴅ ᴘnt αβουτ dcrtcs y gt thr, bvt hw bt stff lk THS", o "\N{LATIN LETTER SMALL CAPITAL G}\N{LATIN LETTER SMALL CAPITAL O}\N{LATIN LETTER SMALL CAPITAL O}\N{LATIN LETTER SMALL CAPITAL D} \N{LATIN LETTER SMALL CAPITAL P}nt \N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER BETA}\N{GREEK SMALL LETTER OMICRON}\N{GREEK SMALL LETTER UPSILON}\N{GREEK SMALL LETTER TAU} dcrtcs y gt thr, bvt hw bt stff lk THS".
tchrist

Pero hay algunas vocales latinas que no tienen descomposiciones de compatibilidad, como ø.
dan04

55
El desafío no dice eliminar las vocales con signos diacríticos, solo a, e, i, o, u, así que Renée’s naïvetédebería dar Rné’s nïvté.
stand

2
¿Por qué las vocales griegas no contarían, si äèïóű etc. (no en [a, e, i, o, u]) sí? O cirílico, para el caso (que no son parecidos, pero efectivamente vocales).
dejó de girar en sentido contrario a las agujas

5

GolfScript (7 bytes distintos, 103 en total)

Suficientemente mejoría sobre la respuesta de w0lf que creo que califica como una respuesta separada:

[9-99))--9+99))99))))))99)9+))9-9)99--)99-9+9--9+9-))99-9+9)))--9+99-9+-9+9-)99-9+9)))-)99)9-9-)))]''+-

12 bytes distintos, 13 en total:

'aeiouAEIOU'-

¡Excelente! Desearía poder votarte de nuevo.
Cristian Lupascu

4

Golfscript (8 bytes distintos, 837 en total)

[9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))]''+-

Explicación:

  1. El programa crea la siguiente matriz de valores enteros: [97 101 105 111 117 65 69 73 79 85](correspondiente a los códigos ASCII de a,e,i,o,u,A,E,I,O,U). Cada número se representa presionando en la pila el valor 9, seguido del número necesario de )(operadores de incremento). Por ejemplo, el número 67se obtiene usando 9y 58 )s
  2. Usando ''+, la matriz se convierte en la cadena "a,e,i,o,u,A,E,I,O,U", que representa todas las vocales
  3. El signo de resta ('-') se usa para restar todas las vocales de la cadena fuente

Los 8 caracteres únicos que se utilizaron: [, ], 9, ), +, -, 'y(space)


4

Ilegible (2 distintos, 2666 en total)

Como todos están publicando lonas de Turing, pensé en usar esta. No es muy conocido, pero existe ( http://esolangs.org/wiki/Unreadable ) y tiene solo dos caracteres.

'""""'""""'""""'""""""'"""'""'""'""'""'""'""'""'""'""'"""'""""'"""""'"""""""'"""'""""'"""
"'""""'""""""'"""'""""""""'"""""""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"""
"'""""""'""'""'"""'""'""'""'""'""'""'""'"""""""'""'""'"""'""""""'""'""'""'"""'""'""'""'""
'""'""'""'""'"""""""'""'""'""'"""'""""'""""'""""""'""'""'""'""'"""'""'""'""'""'""'""'""'"
"'""'"""""""'""'""'""'""'"""'""""""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""""
"""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""
'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""
'""'""'""'"""""""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'"""'"""""
"""'""""""""'"""""""'""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'"""'
""'""'"""""""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'"""'""""""""'""""
""""'""""""""'""""""""'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'"
"'"""""""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'""'"""'""""""""'""""""""'"""
""""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'"""'""""""""'""""""""'""""""""'"""""""
"'"""""""'""'""'""'""'"""'""""""'""'""'""'""'"""'"""""""'""'""'""'"""'""""'""""'""""""'""
'""'""'"""'""'""'""'""'"""""""'""'""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"
"""'""""""'"""'""'""""""""""'"""""'"""""""'"""'""""'""""'""""""'""'""'""'""'""'""'""'""'"
"'""'""'"""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'""""""""'"""'""""'"""""""""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""
""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'
""'""'""'""'""'""'""'""'"""'"""""""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'"""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'"""""""""'"""""""'""'""'""'
""'""'""'""'""'""'""'""'""'""'""'"""'"""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""
'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""
'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'"""""""'"
"'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'
""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""""'""'""'""'""'""'""'""'""'""'
""'""'"""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'""""""
""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'"""'"'""""""""'"""""""'"""'"""'""""""'"""'""'""""""""""

(+1) Bien ... Lo verifiqué con tu intérprete . ¿Todavía se considera "no aprobado", a pesar de que el creador de este lenguaje lo aprobó ? (Parece una pena que el lenguaje no se haya definido utilizando dos caracteres de espacio en blanco en lugar de comillas simples y dobles; o)))
res

@res Eso no debería ser difícil de implementar. ¡Simplemente elija dos espacios en blanco y modifique el intérprete para que reemplace los espacios en blanco por comillas simples y dobles al principio!
ComFreek

2

VBA - 25 22 bytes distintos (120 en total)

Sé que esto no ganará con tantos bytes diferentes, pero aquí está en VBA.

(space), (newline), ", ,, (, ), =, a, b, c, d, e, E, I, l, n, O, p, R, S, u,1

Sub S(u)
u=Replace(Replace(Replace(Replace(Replace(u,"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)
End Sub

* ,,,1permite ignorar el caso. ( 1representa la constante vbTextCompare)


Que no cuente el Een End Sub. Pero bastante agradable, considerando que es básico.
dejó de girar en sentido antihorario

@leftaroundabout ¡Gracias! Absolutamente correcto E, y lo he corregido. Creo que estaba demasiado preocupado por la carne del submarino. ;-)
Gaffi

En realidad, como VBA como idioma admite el autoformato, puede cambiar su respuesta para que esté en minúsculas (o mayúsculas) y VBA lo corregirá por sí mismo, y dado que se acepta que los lenguajes de autoformato pueden considerarse antes de que ocurra el autoformato, significaría que puede soltar el eoE
Taylor Scott

puede configurar esto en una función de ventana inmediata como ?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)por mi recuento de 18 bytes distintos ?Replace(s1,)"uOIy 111 bytes en total
Taylor Scott

1

Python 3.x, 19 caracteres distintos, 62 en total

print(''.join(x for x in input() if x.lower() not in 'aeiou'))

Eso no funciona correctamente en entradas como Renée’s naïveté, ya sabes.
tchrist

1

J, 21 caracteres (18 distintos)

'AEIOUaeiou'-.~1!:1[1

1

K, 29. (18 bytes distintos)

{i@&~(i:0:0)in(_i),i:"AEIOU"}

bytes distintos: {@ & ~ (: 0) en _, "AEIOU}

k){i@&~(i:0:0)in(_i),i:"AEIOU"}`
Hello WoOOrld
"Hll Wrld"

1

ASM - 6 caracteres distintos 520 caracteres de origen (MsDOS .com)

Montado usando A86

db 10110100xb
db 00000110xb
db 10110010xb
db 11111111xb
db 11001101xb
db 00100001xb
db 01110101xb
db 00000001xb
db 11000011xb
db 10001010xb
db 11010000xb
db 10111110xb
db 00011101xb
db 00000001xb
db 10111001xb
db 00001010xb
db 00000000xb
db 01000110xb
db 00101010xb
db 00000100xb
db 01110100xb
db 11101010xb
db 11100010xb
db 11111001xb
db 10110100xb
db 00000110xb
db 11001101xb
db 00100001xb
db 11101011xb
db 11100010xb
db 01000001xb
db 00000100xb
db 00000100xb
db 00000110xb
db 00000110xb
db 00001100xb
db 00000100xb
db 00000100xb
db 00000110xb
db 00000110xb

Simplemente escriba el lenguaje de máquina, serán dos caracteres distintos.
Ugoren

1

MATL, 8 bytes (todos distintos)

t13Y2m~)

Pruébalo en MATL Online

Solo un golf directo, realmente no encontró ningún truco para reutilizar personajes para reducir el bytecount único.

13Y2es un literal que contiene aeiouAEIOU.

Tome un duplicado te de la cadena de entrada, haga una matriz lógica (booleana) que indique qué letras de la entrada no son brasas ( ~) mde ese literal e index ( )) en esos lugares, para devolver una matriz de solo caracteres no vocales.


0

PHP - 30 bytes distintos

<?=preg_replace('/[aeiou]/i','',fgets(STDIN));

1
¿No podría cambiar /[aeiou|AEIOU]/en /[aeiou]/i? Además, su código también hace |desaparecer.
Konrad Borowski

0

golpe 26 distintos, 37 en total

c=$(cat -)
echo "${c//[aeiouAEIOU]/}"

ordenado:

""$$()-///=AEIOU[]aacccceehiootu{}"

scala> code.toList.distinct.length
res51: Int = 26

scala> code.length
res52: Int = 37

"
  ""$$()-///=AEIOU[]aacccceehiootu{}"


scala> code.distinct.sorted 
res56: String = 
"
 "$()-/=AEIOU[]acehiotu{}"

Resultado (conserva saltos de línea):

echo "This program will remove VOWELS.
So we can now speak without them." | ./cg-6025-remove-vowels.sh
Ths prgrm wll rmv VWLS.
S w cn nw spk wtht thm.

Para tr, no está claro cómo contar: '-d aeiouAEIOU' como 10 o 13:

echo "This program will remove VOWELS.
So we can now speak without them." | tr -d aeiouAEIOU

Pensé en usar tr, pero concluí que, dado que no es un lenguaje de programación, tendría que estar envuelto en un shell, por lo que contaría el texto completo de tr -d aeiouAEIOU15.
Peter Taylor

16 <! - char-umbral-gymnastics ->
usuario desconocido

15 distintos, 16 en total.
Peter Taylor

0

Pitón (23)

Alguien tuvo que hacerlo.

print filter(lambda x:x not in'aeiou',raw_input())

3
Eso tiene "solo" 23 caracteres distintos. Pero no funciona en vocales mayúsculas.
dejó de girar en contra

Al agregar un nuevo carácter y cambiar la variable de x a c o s, puede usar minúsculas () (o mayúsculas) y tratar también con las vocales en mayúsculas.
fabikw

0

F # 105 121 91 caracteres

Console.ReadLine()|>Seq.filter(fun c->not("aeiouAEIOU".Contains(c)))|>Seq.iter(printf"%c")

Hmmm ... acabo de notar que este código funcionará en Linqpad pero no en Visual Studio. Y como no tengo ganas de votar mi propia contribución, lo dejaré aquí con este comentario hasta que descubra qué tiene de malo.
Smetad Anarkist

0

Fórmula Excel: 19 bytes distintos (196 en total)

=, S, B, T, (, ), ,, ", a, e, i, o, u, A, E, I, O, U,1

Cell A1: <Value>
Cell B1: =SUBSTITUTE(SUBSTITUTE(A1,"a",""),"e","")
Cell C1: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"i",""),"o",""),"u",""),"A",""),"E",""),"I",""),"O",""),"U","")

* En realidad, hay demasiadas funciones anidadas para trabajar en Excel 2003, pero el concepto está ahí.

Dividir las fórmulas en dos celdas logró el efecto deseado. - El resultado está en C1.



0

K (oK) , 16 bytes, 14 distintos

Solución:

^[;v,_v:"AEIOU"]

Pruébalo en línea!

Explicación:

Usando except ( ^) para filtrar las vocales.

^[;v,_v:"AEIOU"] / the solution
^[;            ] / except (^) projection
      v:"AEIOU"  / save vowels as v
     _           / lowercase (_), "AEIOU" => "aeiou"
    ,            / join (,)
   v             / uppercase vowels
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.