Remova vogais sem usar muitos caracteres diferentes

11

O desafio é remover as vogais (a, e, i, o, u) da string do STDIN (sim, eu sei, simples). Você pode esperar que seu programa não seja executado com nenhum argumento argv.

Exemplo:

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

É alterado para:

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

Existe uma pegadinha. A entrada vencedora é decidida com base no número de bytes diferentes. Por exemplo, a abtem três bytes diferentes ( a, be espaço). Se duas ou mais entradas tiverem a mesma quantidade de bytes diferentes, o fallback será feito no número de bytes dessas entradas.

Konrad Borowski
fonte
9
Um trabalho para a linguagem Whitespace
jfs 28/05
E quanto à entrada Renée’s naïveté? Despojadas de vogais, é claro que isso deve ser Rn’s nvto resultado. Parece que essas abordagens são bastante ingênuas se você me perguntar. :)
tchrist
Se você remover é, também poderá remover y.
usuário desconhecido
4
@ tchrist, leia a pergunta. Diz remover um, e, i, o, u. Você está fora do tópico, por favor, solte-o.
Boothby
1
@ tchrist: Especialmente o desafio não disse "todas as vogais" e enumerou o que deveríamos considerar removível.
usuário desconhecido

Respostas:

2

Espaço em branco binário (2 caracteres distintos, 324 caracteres totais)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

onde S, T, L denota espaço, tabulação, avanço de linha, respectivamente. (Obtido descaradamente convertendo a resposta de espaço em branco por "breadbox" em espaço em branco binário - essa postagem provavelmente deve ser um comentário para a resposta dele, mas é muito longa.)

Espaço em branco binário é um espaço em branco convertido em um idioma de código de prefixo usando TS em vez de T e TT em vez de L; por exemplo, a instrução do BWS para inserir -5 na pilha é SSTSTSSTSTT em vez de SSTTSTL, etc. Link: Um tradutor de ambos os lados para uma linguagem arbitrária de três símbolos e suas versões binárias de prefixo-código .

NB: Seria simples projetar um verdadeiro intérprete bit a bit para programas de espaço em branco binário considerados como sequências de bits , em vez de sequências de caracteres (por exemplo, usando valores de 0,1 bits em vez de caracteres S, T, respectivamente). O acima seria um programa de 324 bits que requer 41 bytes de armazenamento.

res
fonte
13

Brainfuck, 8 distintos (2121 total)

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

Os personagens distict: <>+-[],.. Funciona com intérpretes que usam -1para EOF.

$ echo '
Este programa irá remover VOWELS.
Então agora podemos falar sem eles.
' bf vowel-rm.bf

Esse prgrm rmv VWLS.
S w cn nw spk wtht thm.

deixou de girar contra-relógio
fonte
1
Pelos requisitos estabelecidos, esta é a melhor resposta; mas OTOH é o pior porque usa todos os caracteres sintaticamente significativos em seu idioma.
Dan04 28/05
3
@tchrist: Ele assume ASCII. De qualquer forma, apenas {a, e, i, o, u} estão nos requisitos.
31412 Jon Purdy
1
Por isso é ok para ligar Renée’s naïvetépara Rń’s n̈vt́, então? Isso não parece certo para mim, mas se você diz. Como você não pode assumir nenhuma normalização, é perfeitamente razoável que Renée’s naïvetéseja realmente "Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"- ou se você prefere números mágicos "Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}",. Se você remover as vogais sem os diacríticos correspondentes, você obtém extrema bobagem. Bem-vindo ao admirável novo milênio! :)
tchrist
1
Use Unary, você teria apenas um caractere distinto! :-P esolangs.org/wiki/Unary
marinus
3
@ Marinus, eu converti isso para Unary e eu só precisava de 1.166921663690E+1824bytes para armazená-lo (eu carreguei o número exato para pastebin, ele não caberia neste comentário). Gostaria de saber quanto tempo levaria para enviá-lo para este site.
Konrad Borowski
10

Espaço em branco, 3 pontos (218 caracteres)

Você sabia que estava chegando.

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

(_ = espaço, ⇥ = tabulação, ↲ = nova linha)

Aqui está o script codificado em base64:

CiAgIAogICAgCgkKCSAgICAgCiAgIAkgICAgIAkKICAgCSAgIAkgCQogICAJICAJICAJCiAgIAkg
IAkJCQkKICAgCSAJIAkgCQogICAJCSAgICAJCiAgIAkJICAJIAkKICAgCQkgCSAgCQogICAJCSAJ
CQkJCiAgIAkJCSAJIAkKCiAgIAkKIAogCgkgCQogICAgCgkJCQkgIAkKCSAKCiAKIAkKCiAgCgoJ
ICAKCiAKCgogIAkKICAgIAoJCQkgCiAKCSAgIAoJCiAgCiAKIAoKICAgIAoKCgo=

E aqui está o programa escrito em forma visível de montador:

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
caixa de pão
fonte
Cheira a Acme :: Alvejante para mim. :)
tchrist
Quando eu converto seu programa "simbólico" em espaço em branco, ele tem erros de sintaxe fatais.
res
Isso é estranho. Você se lembrou de remover as novas linhas reais antes de fazer a conversão? Devo incluir apenas uma codificação base64 do script real.
Breadbox
1
Sim, eu fiz isso - sua versão base64 decodifica exatamente o que estou usando. Aqui está uma versão "STL" (com S, T, codificação espaço, tabulação L, avanço de linha respectivamente): LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL. Parece que dois problemas (entre outros) são que você está tentando inserir um 0 na pilha usando em SSSLvez de SSSSLe também tentando definir um rótulo "vazio" usando LSSLfor skip.
res
1
Desculpe pelo atraso ... Acabei de confirmar que, na verdade, a Versão 0.3 (binário Linux) do interpretador Whitespace de Edwin Brady realmente executa seu programa sem reclamar. Estou usando a implementação Ruby (disponível na mesma página), que não permite a sintaxe que você está usando.
res
8

SED (10 bytes distintos, 13 no total)

s/[aeIou]//gI

Uso da amostra:

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

saídas:

Th qck brwn fx jmps vr th lzy dg.
Cristian Lupascu
fonte
Apenas imaginando, por que Imaiúsculas? Funciona bem quando os Icaracteres são minúsculos.
Konrad Borowski 28/05
2
@ GllitchMr Acabei de fazer isso para enfatizar que o Ipersonagem é reutilizado.
Cristian Lupascu
1
@tchrist Não acho que o OP tenha mencionado vogais francesas em seu post. Além disso, eu gosto de escrever programas ingênuos. :-)
Cristian Lupascu
3
Tenho certeza öe ïsou mal utilizado no seu exemplo e os outros dois são consoantes. Ainda assim, acho que você tem razão. Mas, dessa forma, podemos acabar apoiando ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮; talvez até ,, slǝʍoʌ uʍop ǝpısdn ,, :-)
Cristian Lupascu
1
@ w0lf, esses usos öe ïjá foram encontrados em inglês, embora quase tenham desaparecido agora.
28512 Joe
7

C, 22 20 19 caracteres distintos.

Cartas necessárias para main, putchar, getchar= 12.
Pontuação - (){};= 5.
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);
}

mainchama comportamento indefinido (muito --em uma linha).
Não me importo com o valor da expressão e ele diminui iio número certo de vezes.
Pode ser corrigido facilmente, separando os decrementos com ;. Mas é muito melhor do que é.

Versão antiga, 20 caracteres: na
verdade 21, porque não notei que alguns espaços são significativos e devem ser contados, mas podem ser substituídos por parênteses com facilidade.

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));
}

Talvez possa ser melhorado ainda mais, compilando gcc -nostartfilese renomeando mainpara _start. minsão removidos (após renomear algumas variáveis), _sadicionados. Mas então eu preciso usar exit(), o que adiciona 3 caracteres.
Em vez de _start, qualquer nome pode ser usado e funciona no Linux. Isso permite diminuir para 18 caracteres, mas é muito fora do padrão.

Ugoren
fonte
6

Perl: 8 ou 10 caracteres distintos

s/// solução: 10 distintas, 13 totais

A técnica (suposta; veja abaixo) sed sempre funciona em perl também e produz o número do nome de caracteres distintos (10):

s/[aeiou]//gi

Por exemplo:

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

São 10 caracteres distintos, pois isso prova:

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

O problema com a solução sed é que a sua /ié não parte de POSIX sed, e, portanto, não é 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'

Isso está sendo executado em um sistema OpenBSD. Por outro lado, como /isempre faz parte do perl padrão, é possível contar com ele sempre lá. Ao contrário do sed.

Se você deseja incluir "y" na lista de vogais, é claro que será uma maior se você usar a mesma 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

E agora são 14 caracteres no total.

tr[][] solução: 8 distintas 10 no total

Você também pode usar tr///para remover qualquer coisa que corresponda. O Perl pode até usar o y///alias do sed para tr:

y/aeiou//d

agora com 8 caracteres distintos, mas não funciona em maiúsculas. Você acaba tendo que adicionar mais 5 caracteres para lidar com os mapas de caso:

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

e é claro que agora são 15 no total.

No entanto, adicionar "y" à mistura como vogal não aumenta o número de caracteres distintos, como ocorreu com a s///versão:

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

Portanto, ainda são apenas os 8 originais distintos do total de 11:

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

EDIT : Contabilidade para diacríticos

E quanto a entradas como Renée’s naïveté? A saída correta, obviamente, deve ser Rn’s nvt. Veja como fazer isso, usando o /rsinalizador da 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

São 27 caracteres distintos:

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

Você pode apará-lo para 26 se puder garantir que está executando pelo menos a v5.10 trocando o printpor um 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

E você pode reduzi-lo para 22 se não se importar de mover os diacríticos em vez de removê-los:

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

O que é ... interessante de se ver, para dizer o mínimo. :) Aqui está sua contagem distinta:

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

Boa sorte em conseguir que qualquer outro idioma lide corretamente com diacríticos usando menos caracteres do que isso!

tchrist
fonte
1
ᴘₒᵢⁿᵗ ᴘₒᵢⁿᵗ αβουτ 𝓽𝓱𝓮𝓻𝓮 𝑦𝑜𝑢 𝒈𝒐𝒕 𝓽𝓱𝓮𝓻𝓮, 𝒷𝓋𝓉 𝔥𝔬𝔴 𝕒𝕓𝕠𝕦𝕥 𝘀𝘁𝘂𝗳𝗳 𝚕𝚒𝚔𝚎?
deixou de girar no sentido contrário ao relógio
@leftaroundabout A maior parte disso é corrigida ao se comprometer com uma decomposição do NFKD. Os gregos não contam, embora sejam parecidos, e as pequenas maiúsculas não se decompõem em regulares. O resultado é "ɢᴏᴏᴅ ᴘnt αβουτ dcrtcs y gt thr, bvt hw bt stff lk THS", ou "\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
Mas existem algumas vogais latinas que não têm decomposições de compatibilidade, como ø.
Dan04 29/05
5
O desafio não diz para remover vogais com sinais diacríticos - apenas a, e, i, o, u - então Renée’s naïvetédeve dar Rné’s nïvté.
Boothby
2
Por que as vogais gregas não contam, se äèïóű etc. (não em [a, e, i, o, u]!) Contam? Ou cirílico, por falar nisso (que não são parecidos, mas com certeza vogais).
deixou de girar no sentido contrário ao relógio
5

GolfScript (7 bytes distintos, 103 total)

Uma melhoria suficiente em relação à resposta de w0lf , que eu acho que se qualifica como 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 total:

'aeiouAEIOU'-
Peter Taylor
fonte
Ótimo! Eu gostaria de poder te votar novamente.
Cristian Lupascu
4

Golfscript (8 bytes distintos, 837 total)

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

Explicação:

  1. O programa cria a seguinte matriz de valores inteiros: [97 101 105 111 117 65 69 73 79 85](correspondente aos códigos ASCII de a,e,i,o,u,A,E,I,O,U). Cada número é representado pressionando na pilha o valor 9, seguido pelo número necessário de )(operadores de incremento). Por exemplo, o número 67é obtido usando 9e 58 )s
  2. Usando ''+, o array é convertido na string "a,e,i,o,u,A,E,I,O,U", representando todas as vogais
  3. O sinal de subtração ('-') é usado para subtrair todas as vogais da string de origem

Os 8 personagens únicos que foram usados: [, ], 9, ), +, -, 'e(space)

Cristian Lupascu
fonte
4

Ilegível (2 distintos, 2666 total)

Como todo mundo está postando lonas de Turing, pensei em usar este. Não é muito conhecido, mas existe ( http://esolangs.org/wiki/Unreadable ) e possui apenas dois caracteres.

'""""'""""'""""'""""""'"""'""'""'""'""'""'""'""'""'""'"""'""""'"""""'"""""""'"""'""""'"""
"'""""'""""""'"""'""""""""'"""""""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"""
"'""""""'""'""'"""'""'""'""'""'""'""'""'"""""""'""'""'"""'""""""'""'""'""'"""'""'""'""'""
'""'""'""'""'"""""""'""'""'""'"""'""""'""""'""""""'""'""'""'""'"""'""'""'""'""'""'""'""'"
"'""'"""""""'""'""'""'""'"""'""""""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""""
"""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""
'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""
'""'""'""'"""""""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'"""'"""""
"""'""""""""'"""""""'""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'"""'
""'""'"""""""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'"""'""""""""'""""
""""'""""""""'""""""""'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'"
"'"""""""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'""'"""'""""""""'""""""""'"""
""""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'"""'""""""""'""""""""'""""""""'"""""""
"'"""""""'""'""'""'""'"""'""""""'""'""'""'""'"""'"""""""'""'""'""'"""'""""'""""'""""""'""
'""'""'"""'""'""'""'""'"""""""'""'""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"
"""'""""""'"""'""'""""""""""'"""""'"""""""'"""'""""'""""'""""""'""'""'""'""'""'""'""'""'"
"'""'""'"""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'""""""""'"""'""""'"""""""""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""
""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'
""'""'""'""'""'""'""'""'"""'"""""""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'"""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'"""""""""'"""""""'""'""'""'
""'""'""'""'""'""'""'""'""'""'""'"""'"""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""
'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""
'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'"""""""'"
"'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'
""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""""'""'""'""'""'""'""'""'""'""'
""'""'"""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'""""""
""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'"""'"'""""""""'"""""""'"""'"""'""""""'"""'""'""""""""""
marinus
fonte
(+1) Bom ... verifiquei com seu intérprete . Ainda é considerado "não aprovado", mesmo que o criador desse idioma o tenha aprovado ? (Parece uma pena que a língua não foi definida usando dois espaços em branco caracteres em vez de aspas simples e; o)))
res
@res Isso não deve ser difícil de implementar. Basta escolher dois espaços em branco e modificar o intérprete para que ele substitua os espaços em branco pelas aspas simples e duplas primeiro!
ComFreek
2

VBA - 25 22 bytes distintos (120 total)

Eu sei que isso não vai ganhar com tantos bytes diferentes, mas aqui está no 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 o caso. ( 1representa a constante vbTextCompare)

Gaffi
fonte
Você não contar o Eno End Sub. Mas muito bom, considerando que é básico.
deixou de girar no sentido contrário ao relógio
@leftaroundabout Thanks! Absolutamente certo E, e eu corrigi. Eu acho que estava muito preocupado com a carne do Sub. ;-)
Gaffi 30/05
Na verdade, como o VBA como um idioma promove a formatação automática, você pode alterar sua resposta para todas as letras minúsculas (ou maiúsculas) e o VBA irá corrigir isso por si próprio, e porque é aceito que os idiomas de formatação automática possam ser considerados antes que a formatação automática ocorra, que significaria que você pode largar o eouE
Taylor Scott
você pode configurar esse baixo para uma função janela imediata, ?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)com a minha contagem de 18 Bytes distintos ?Replace(s1,)"uOIe 111 bytes no total
Taylor Scott
1

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

print(''.join(x for x in input() if x.lower() not in 'aeiou'))
dan04
fonte
Isso não funciona corretamente em entradas como Renée’s naïveté, você sabe.
Tchrist 28/05
1

J, 21 caracteres (18 distintos)

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

K, 29. (18 bytes distintos)

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

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

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

ASM - 6 caracteres distintos 520 caracteres de origem (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
Skizz
fonte
Basta escrever a linguagem da máquina, serão dois caracteres distintos.
Ugoren
1

MATL, 8 bytes (todos distintos)

t13Y2m~)

Experimente no MATL Online

Apenas um jogo de golfe direto, não encontrou nenhum truque para reutilizar personagens para reduzir o número de bytes único.

13Y2é um literal que contém aeiouAEIOU.

Faça uma duplicata tda string de entrada, faça uma matriz lógica (booleana) indicando quais letras da entrada não são ( ~) mbrasas desse literal e indexe ( )) nesses locais, para retornar uma matriz apenas de caracteres que não sejam vogais.

sundar - Restabelecer Monica
fonte
0

PHP - 30 bytes distintos

<?=preg_replace('/[aeiou]/i','',fgets(STDIN));
l0n3sh4rk
fonte
1
Você não pode mudar /[aeiou|AEIOU]/para /[aeiou]/i? Além disso, seu código também faz |com que desapareça.
Konrad Borowski
0

festança 26 distinta, 37 total

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

classificados:

""$$()-///=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 (preserva os feeds de linha):

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, não está claro como contar: '-d aeiouAEIOU' como 10 ou 13:

echo "This program will remove VOWELS.
So we can now speak without them." | tr -d aeiouAEIOU
Usuário desconhecido
fonte
Eu considerei usando tr, mas concluiu que, uma vez que não é uma linguagem de programação que teria de ser envolto em uma concha, por isso contaria o texto completo sobre tr -d aeiouAEIOUpara 15.
Peter Taylor
16 <! - char-threshold-gymnastics ->
user unknown
15 distintas, 16 no total.
31512 Peter Taylor
0

Python (23)

Alguém tinha que fazer isso.

print filter(lambda x:x not in'aeiou',raw_input())
beary605
fonte
3
Que possui "apenas" 23 caracteres distintos. Mas não funciona em vogais maiúsculas.
deixou de girar no sentido contrário ao relógio
Adicionando um novo caractere e alterando a variável de x para c ou s, você pode usar minúsculas () (ou maiúsculas) e lidar também com vogais maiúsculas.
Fabikw
0

F # 105 121 91 caracteres

Console.ReadLine()|>Seq.filter(fun c->not("aeiouAEIOU".Contains(c)))|>Seq.iter(printf"%c")
Smetad Anarkist
fonte
Hmmm ... Acabei de notar que esse código funcionará no Linqpad, mas não no Visual Studio. E como não tenho vontade de votar minha própria contribuição, deixarei aqui com esse comentário até descobrir o que há de errado com isso.
Smetad Anarkist
0

Fórmula do Excel - 19 bytes distintos (total de 196)

=, 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","")

* Na verdade, existem muitas funções aninhadas para funcionar no Excel 2003, mas o conceito está lá.

A divisão das fórmulas em duas células alcançou o efeito desejado. - O resultado está em C1.

Gaffi
fonte
0

Noether, 16 bytes individuais (17 no total)

I"[aeiouAEIOU]"-P

Experimente online!

Usa a regex

[aeiouAEIOU]

para remover as vogais da string de entrada.

Beta Decay
fonte
0

K (oK) , 16 bytes, 14 distintos

Solução:

^[;v,_v:"AEIOU"]

Experimente online!

Explicação:

Use except ( ^) para filtrar as vogais.

^[;v,_v:"AEIOU"] / the solution
^[;            ] / except (^) projection
      v:"AEIOU"  / save vowels as v
     _           / lowercase (_), "AEIOU" => "aeiou"
    ,            / join (,)
   v             / uppercase vowels
rua
fonte