Supprimez les voyelles sans utiliser trop de caractères différents

10

Le défi est de supprimer les voyelles (a, e, i, o, u) de la chaîne de STDIN (oui, je sais, simple). Vous pouvez vous attendre à ce que votre programme ne soit pas exécuté avec des arguments dans argv.

Exemple:

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

Est changé en:

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

Il y a un hic. L'entrée gagnante est décidée en fonction du nombre d'octets différents. Par exemple, a aba trois octets différents ( a, bet espace). Si deux ou plusieurs entrées auront cette même quantité d'octets différents, alors le remplacement est effectué sur le nombre d'octets pour ces entrées.

Konrad Borowski
la source
9
Un emploi pour la langue des
espaces blancs
Qu'en est-il de l'entrée comme Renée’s naïveté? Dépouillé de voyelles, cela devrait bien sûr être Rn’s nvten sortie. On dirait que ces approches sont toutes assez naïves si vous me demandez. :)
tchrist
Si vous supprimez é, vous pouvez également supprimer y.
utilisateur inconnu
4
@tchrist, lisez la question. Dit supprimer a, e, i, o, u. Vous êtes hors sujet, laissez-le tomber.
stand
1
@tchrist: Surtout le défi n'a pas dit "toutes les voyelles" et a énuméré ce que nous devrions considérer comme amovibles.
utilisateur inconnu

Réponses:

2

Espace binaire (2 caractères distincts, 324 caractères au total)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

où S, T, L désignent respectivement Espace, Tabulation, Saut de ligne. ( Obtenu sans vergogne en convertissant la réponse de l'espace blanc par "boîte à pain" en espace binaire - cette publication devrait probablement être un commentaire à sa réponse, mais elle est trop longue.)

L'espace binaire est un espace blanc converti en un langage de préfixe en utilisant partout TS au lieu de T et en utilisant TT au lieu de L; Par exemple, l'instruction BWS pour pousser -5 sur la pile est SSTSTSSTSTT au lieu de SSTTSTL, etc. Lien: Traducteur bidirectionnel pour un langage arbitraire à 3 symboles et ses versions de code préfixe binaire .

NB: Il serait simple de concevoir un véritable interpréteur au niveau du bit pour les programmes d' espaces binaires considérés comme des séquences de bits , plutôt que des séquences de caractères (par exemple, en utilisant des valeurs de 0,1 bit au lieu des caractères S, T, respectivement). Ce qui précède serait alors un programme de 324 bits nécessitant 41 octets de stockage.

res
la source
13

Brainfuck, 8 distincts (2121 au total)

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

Les caractères distict: <>+-[],.. Fonctionne avec des interprètes qui utilisent -1pour EOF.

$ echo '
Ce programme supprimera les voyelles.
Nous pouvons donc maintenant parler sans eux.
«| bf vowel-rm.bf Th

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

a cessé de tourner dans le sens antihoraire
la source
1
Selon les exigences énoncées, c'est la meilleure réponse; mais OTOH est le pire en ce qu'il utilise tous les caractères syntaxiquement significatifs dans sa langue.
dan04
3
@tchrist: Il suppose ASCII. Quoi qu'il en soit, seuls {a, e, i, o, u} sont dans les exigences.
Jon Purdy
1
Alors, ça va Renée’s naïvetédevenir Rń’s n̈vt́? Cela ne me semble pas juste, mais si vous le dites. Puisque vous ne pouvez pas supposer une normalisation, il est tout à fait raisonnable Renée’s naïvetéest vraiment "Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"- ou si vous préférez nombres magiques, "Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}". Si vous supprimez les voyelles sans leurs signes diacritiques, vous obtenez une stupidité extrême. Bienvenue dans le Brave New Millennium! :)
tchrist
1
Utilisez Unary, vous n'auriez qu'un seul caractère distinct! :-P esolangs.org/wiki/Unary
marinus
3
@marinus, je l'ai converti en Unary et j'avais juste besoin d' 1.166921663690E+1824octets pour le stocker (j'ai téléchargé le nombre exact dans pastebin, il ne rentrerait pas dans ce commentaire). Je me demande combien de temps il faudrait pour l'envoyer sur ce site.
Konrad Borowski
10

Espace, 3 points (218 caractères)

Tu savais que ça allait arriver.

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

(_ = espace, ⇥ = tabulation, ↲ = nouvelle ligne)

Voici le script encodé en base64:

CiAgIAogICAgCgkKCSAgICAgCiAgIAkgICAgIAkKICAgCSAgIAkgCQogICAJICAJICAJCiAgIAkg
IAkJCQkKICAgCSAJIAkgCQogICAJCSAgICAJCiAgIAkJICAJIAkKICAgCQkgCSAgCQogICAJCSAJ
CQkJCiAgIAkJCSAJIAkKCiAgIAkKIAogCgkgCQogICAgCgkJCQkgIAkKCSAKCiAKIAkKCiAgCgoJ
ICAKCiAKCgogIAkKICAgIAoJCQkgCiAKCSAgIAoJCiAgCiAKIAoKICAgIAoKCgo=

Et voici le programme écrit sous forme d'assembleur 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
boite à pain
la source
Ça sent comme Acme :: Bleach pour moi. :)
tchrist
Lorsque je convertis votre programme "symbolique" en espace blanc, il présente des erreurs de syntaxe fatales.
res
C'est étrange. Avez-vous pensé à supprimer les nouvelles lignes avant de procéder à la conversion? Je devrais simplement inclure un encodage en base64 du script réel.
boîte à pain
1
Oui, je l'ai fait - votre version base64 décode exactement ce que j'utilise. Voici une version "STL" (avec S, T, L codage Espace, Tab, respectivement saut de ligne): LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL. Il semble que deux problèmes (entre autres) sont que vous essayez de pousser un 0 sur la pile en utilisant SSSLau lieu de SSSSL, et essayez également de définir une étiquette "vide" en utilisant LSSLpour skip.
res
1
Désolé pour le retard ... Je viens de confirmer qu'effectivement la version 0.3 d' Edwin Brady (binaire Linux) de l'interpréteur Whitespace exécute bien votre programme sans se plaindre. J'ai utilisé l'implémentation Ruby (disponible sur la même page), qui interdit la syntaxe que vous utilisez.
rés
8

SED (10 octets distincts, 13 au total)

s/[aeIou]//gI

Exemple d'utilisation:

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

les sorties:

Th qck brwn fx jmps vr th lzy dg.
Cristian Lupascu
la source
Je me demande simplement pourquoi Iest-il en majuscules? Cela fonctionne bien lorsque les Icaractères sont en minuscules.
Konrad Borowski
2
@GlitchMr Je viens de le faire pour souligner que le Ipersonnage est réutilisé.
Cristian Lupascu
1
@tchrist Je ne pense pas que l'OP ait mentionné les voyelles françaises dans son message. J'aime aussi écrire des programmes naïfs. :-)
Cristian Lupascu
3
Je suis à peu près sûr öet ïsont mal utilisés dans votre exemple et les deux autres sont des consonnes. Pourtant, je pense que vous avez un point. Mais de cette façon, nous pourrions finir par soutenir également ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮; peut-être même ,, slǝʍoʌ uʍop ǝpısdn ,, :-)
Cristian Lupascu
1
@ w0lf, ces utilisations de öet ïont déjà été trouvées en anglais, bien qu'elles aient presque disparu maintenant.
Joe
7

C, 22 20 19 caractères distincts.

Lettres nécessaires pour main, putchar, getchar= 12.
Ponctuation - (){};= 5.
Opérateurs - &-= 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);
}

maininvoque un comportement indéfini (trop sur une --seule ligne).
Je ne me soucie pas de la valeur de l'expression, et elle décrémente iile bon nombre de fois.
Peut être fixé facilement en séparant les diminutions avec ;. Mais c'est tellement plus agréable que ça.

Ancienne version, 20 caractères: en
fait 21, car je n'ai pas remarqué que certains espaces sont importants et doivent être comptés, mais ils peuvent être remplacés facilement par des parenthèses.

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

Peut - être peut - on améliorer encore, en compilant avec gcc -nostartfiles, et renommer mainà _start. minsont supprimés (après un certain changement de nom de variable), _sajoutés. Mais alors je dois utiliser exit(), ce qui ajoute 3 caractères.
Au lieu de _start, n'importe quel nom peut être utilisé et cela fonctionne sous Linux. Cela permet de descendre à 18 caractères, mais est très non standard.

ugoren
la source
6

Perl: 8 ou 10 caractères distincts

s/// solution: 10 distinctes, 13 au total

La technique sed (supposée; voir ci-dessous) fonctionne toujours aussi en perl, et donne le nombre de noms de caractères distincts (10):

s/[aeiou]//gi

Par exemple:

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

C'est 10 caractères distincts, comme cela le prouve:

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

Le problème avec la solution sed est qu'elle ne/i fait pas partie de POSIX sed et n'est donc pas portable:

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

Cela fonctionne sur un système OpenBSD. En revanche, comme il /ifait en effet toujours partie de Perl standard, vous pouvez compter sur sa présence permanente. Contrairement à sed.

Si vous voulez inclure "y" dans la liste des voyelles, c'est bien sûr un de plus si vous utilisez la même technique:

$ 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

Et c'est maintenant 14 caractères au total.

tr[][] solution: 8 distincts 10 au total

Vous pouvez également utiliser tr///pour supprimer tout ce qui correspond. Perl peut même utiliser l' y///alias de sed pour tr:

y/aeiou//d

qui est maintenant 8 caractères distincts, mais ne fonctionne pas en majuscules. Vous finissez par devoir ajouter 5 caractères supplémentaires pour faire face aux casemaps:

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

et bien sûr, c'est maintenant 15 au total.

Cependant, l'ajout de «y» au mélange comme voyelle n'augmente pas le nombre de caractères distincts comme il l'a fait avec la s///version:

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

Il ne s'agit donc que des 8 originaux distincts sur un total de 11:

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

EDIT : Comptabilisation des diacritiques

Et qu'en est-il des entrées Renée’s naïveté? La sortie correcte devrait bien sûr être Rn’s nvt. Voici comment faire cela, en utilisant le /rdrapeau de la v5.14 pour s///:

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

C'est 27 caractères distincts:

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

Vous pouvez couper que 26 si vous pouvez garantir que vous utilisez au moins v5.10 en échangeant le printpour 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

Et vous pouvez le ramener à 22 si cela ne vous dérange pas de déplacer les diacritiques au lieu de les supprimer:

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

Ce qui est ... intéressant à regarder, c'est le moins qu'on puisse dire. :) Voici son compte distinct:

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

Bonne chance pour obtenir une autre langue pour gérer correctement les signes diacritiques en utilisant moins de caractères que cela!

tchrist
la source
1
ɢᴏᴏᴅ ᴘₒᵢⁿᵗ αβουτ 𝐝𝐢𝐚𝐜𝐫𝐢𝐭𝐢𝐜𝐬 𝑦𝑜𝑢 𝒈𝒐𝒕 𝓽𝓱𝓮𝓻𝓮, 𝒷𝓋𝓉 𝔥𝔬𝔴 𝕒𝕓𝕠𝕦𝕥 𝘀𝘁𝘂𝗳𝗳 𝚕𝚒𝚔𝚎 𝕋ℍ𝕀𝕊?
cessé de tourner dans
@leftaroundabout La plupart de ces problèmes sont corrigés en s'engageant dans une décomposition NFKD. Les Grecs ne comptent pas même s'ils sont des sosies, et les petits bouchons ne se décomposent pas en habitués. Le résultat est "ɢᴏᴏᴅ ᴘ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
Mais y a-t-il des voyelles latines qui n'ont pas de décompositions de compatibilité, comme ø.
dan04
5
défi ne dit pas de supprimer les voyelles avec des signes diacritiques - juste a, e, i, o, u - donc Renée’s naïvetédevrait donner Rné’s nïvté.
stand
2
Pourquoi les voyelles grecques ne compteraient-elles pas, si äèïóű etc. (pas en [a, e, i, o, u]!) Le font? Ou cyrillique, d'ailleurs (qui ne sont pas des sosies, mais bien sûr des voyelles).
cessé de tourner dans
5

GolfScript (7 octets distincts, 103 au total)

Une amélioration suffisante par rapport à la réponse de w0lf que je pense qu'elle peut être considérée comme distincte:

[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 octets distincts, 13 au total:

'aeiouAEIOU'-
Peter Taylor
la source
Génial! J'aimerais pouvoir vous voter à nouveau.
Cristian Lupascu
4

Golfscript (8 octets distincts, 837 au total)

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

Explication:

  1. Le programme crée le tableau suivant de valeurs entières: [97 101 105 111 117 65 69 73 79 85](correspondant aux codes ASCII de a,e,i,o,u,A,E,I,O,U). Chaque nombre est représenté en poussant sur la pile la valeur 9, suivi du nombre nécessaire de )(opérateurs d'incrémentation). Par exemple, le nombre 67est obtenu en utilisant 9et 58 )s
  2. À l'aide de ''+, le tableau est converti en chaîne "a,e,i,o,u,A,E,I,O,U", représentant toutes les voyelles
  3. Le signe de soustraction ('-') est ensuite utilisé pour soustraire toutes les voyelles de la chaîne source

Les 8 caractères uniques qui ont été utilisés: [, ], 9, ), +, -, 'et(space)

Cristian Lupascu
la source
4

Illisible (2 distincts, 2666 au total)

Puisque tout le monde publie des tarpits Turing, j'ai pensé utiliser celui-ci. Ce n'est pas très connu mais il existe ( http://esolangs.org/wiki/Unreadable ) et il n'a que deux caractères.

'""""'""""'""""'""""""'"""'""'""'""'""'""'""'""'""'""'"""'""""'"""""'"""""""'"""'""""'"""
"'""""'""""""'"""'""""""""'"""""""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"""
"'""""""'""'""'"""'""'""'""'""'""'""'""'"""""""'""'""'"""'""""""'""'""'""'"""'""'""'""'""
'""'""'""'""'"""""""'""'""'""'"""'""""'""""'""""""'""'""'""'""'"""'""'""'""'""'""'""'""'"
"'""'"""""""'""'""'""'""'"""'""""""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""""
"""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""
'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""
'""'""'""'"""""""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'"""'"""""
"""'""""""""'"""""""'""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'"""'
""'""'"""""""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'"""'""""""""'""""
""""'""""""""'""""""""'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'"
"'"""""""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'""'"""'""""""""'""""""""'"""
""""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'"""'""""""""'""""""""'""""""""'"""""""
"'"""""""'""'""'""'""'"""'""""""'""'""'""'""'"""'"""""""'""'""'""'"""'""""'""""'""""""'""
'""'""'"""'""'""'""'""'"""""""'""'""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"
"""'""""""'"""'""'""""""""""'"""""'"""""""'"""'""""'""""'""""""'""'""'""'""'""'""'""'""'"
"'""'""'"""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'""""""""'"""'""""'"""""""""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""
""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'
""'""'""'""'""'""'""'""'"""'"""""""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'"""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'"""""""""'"""""""'""'""'""'
""'""'""'""'""'""'""'""'""'""'""'"""'"""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""
'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""
'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'"""""""'"
"'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'
""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""""'""'""'""'""'""'""'""'""'""'
""'""'"""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'""""""
""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'"""'"'""""""""'"""""""'"""'"""'""""""'"""'""'""""""""""
marinus
la source
(+1) Sympa ... Je l'ai vérifié avec votre interprète . Est-il toujours considéré comme "non approuvé", même si le créateur de cette langue l'a approuvé ? (Il semble dommage que le langage n'ait pas été défini en utilisant deux espaces au lieu de guillemets simples et doubles; o)))
res
@res Cela ne devrait pas être difficile à mettre en œuvre. Choisissez simplement deux espaces blancs et modifiez l'interpréteur afin qu'il remplace les espaces blancs par les guillemets simples et doubles au début!
ComFreek
2

VBA - 25 22 octets distincts (120 au total)

Je sais que cela ne gagnera pas avec autant d'octets différents, mais ici, c'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

* ,,,1permet d'ignorer la casse. ( 1représente la constante vbTextCompare)

Gaffi
la source
Vous ne comptiez pas l' Een End Sub. Mais assez sympa, vu que c'est Basic.
cessé de tourner dans
@leftaroundabout Merci! Absolument raison E, et je l'ai corrigé. Je pense que j'étais trop inquiet pour la viande du Sub. ;-)
Gaffi
En fait, comme VBA en tant que langue supprime la mise en forme automatique, vous pouvez modifier votre réponse pour qu'elle soit en minuscules (ou en majuscules) et VBA corrigera cela lui-même, et parce qu'il est admis que les langues de mise en forme automatique peuvent être prises en compte avant la mise en forme automatique, signifierait que vous pouvez laisser tomber le eouE
Taylor Scott
vous pouvez configurer cela à une fonction de fenêtre immédiate comme ?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)avec mon compte 18 ?Replace(s1,)"uOIoctets distincts et 111 octets au total
Taylor Scott
1

Python 3.x, 19 caractères distincts, 62 au total

print(''.join(x for x in input() if x.lower() not in 'aeiou'))
dan04
la source
Cela ne fonctionne pas correctement sur des entrées comme Renée’s naïveté, vous savez.
tchrist
1

J, 21 caractères (18 distincts)

'AEIOUaeiou'-.~1!:1[1
Gareth
la source
1

K, 29. (18 octets distincts)

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

octets distincts: {@ & ~ (: 0) dans _, "AEIOU}

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

ASM - 6 caractères distincts 520 caractères source (MsDOS .com)

Assemblé en utilisant 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
la source
Il suffit d'écrire le langage machine, ce sera deux caractères distincts.
ugoren
1

MATL, 8 octets (tous distincts)

t13Y2m~)

Essayez-le sur MATL Online

Juste un golf direct, n'a pas vraiment trouvé d'astuce pour réutiliser les personnages pour réduire le nombre de bytec unique.

13Y2est un littéral contenant aeiouAEIOU.

Prenez un duplicata tde la chaîne d'entrée, créez un tableau logique (booléen) indiquant quelles lettres de l'entrée ne sont pas ( ~) des mbraises de ce littéral, et indexez ( )) à ces endroits, pour renvoyer un tableau de caractères non-voyelle uniquement.

Sundar - Rétablir Monica
la source
0

PHP - 30 octets distincts

<?=preg_replace('/[aeiou]/i','',fgets(STDIN));
l0n3sh4rk
la source
1
Ne pourriez - vous changer /[aeiou|AEIOU]/en /[aeiou]/i? De plus, votre code fait également |disparaître.
Konrad Borowski
0

bash 26 distincts, 37 au total

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

trié:

""$$()-///=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{}"

Résultat (conserve les sauts de ligne):

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.

Pour tr, on ne sait pas comment compter: '-d aeiouAEIOU' comme 10 ou 13:

echo "This program will remove VOWELS.
So we can now speak without them." | tr -d aeiouAEIOU
Utilisateur inconnu
la source
J'ai envisagé d'utiliser tr, mais j'ai conclu que puisque ce n'est pas un langage de programmation, il devrait être enveloppé dans un shell, donc il compterait le texte intégral de tr -d aeiouAEIOU15.
Peter Taylor
16 <! - char-threshold-gymnastics ->
utilisateur inconnu
15 distincts, 16 au total.
Peter Taylor
0

Python (23)

Quelqu'un devait le faire.

print filter(lambda x:x not in'aeiou',raw_input())
beary605
la source
3
Cela n'a "que" 23 caractères distincts. Mais ne fonctionne pas sur les voyelles majuscules.
cessé de tourner dans
En ajoutant un nouveau caractère et en changeant la variable de x à c ou s, vous pouvez utiliser des minuscules () (ou des majuscules) et traiter également des voyelles majuscules.
fabikw
0

F # 105121 91 caractères

Console.ReadLine()|>Seq.filter(fun c->not("aeiouAEIOU".Contains(c)))|>Seq.iter(printf"%c")
Smetad Anarkist
la source
Hmmm ... Je viens de remarquer que ce code fonctionnera dans Linqpad mais pas dans Visual Studio. Et comme je n'ai pas envie de voter contre ma propre contribution, je vais le laisser ici avec ce commentaire jusqu'à ce que je trouve ce qui ne va pas.
Smetad Anarkist
0

Formule Excel - 19 octets distincts (196 au 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","")

* Il s'agit en fait d'un trop grand nombre de fonctions imbriquées pour fonctionner dans Excel 2003, mais le concept est là.

La division des formules en deux cellules a produit l'effet souhaité. - Le résultat est en C1.

Gaffi
la source
0

Noether, 16 octets individuels (17 au total)

I"[aeiouAEIOU]"-P

Essayez-le en ligne!

Utilise l'expression régulière

[aeiouAEIOU]

pour supprimer les voyelles de la chaîne d'entrée.

Beta Decay
la source
0

K (oK) , 16 octets, 14 distincts

Solution:

^[;v,_v:"AEIOU"]

Essayez-le en ligne!

Explication:

Utiliser except ( ^) pour filtrer les voyelles.

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