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 ab
a trois octets différents ( a
, b
et 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.
code-challenge
string
Konrad Borowski
la source
la source
Renée’s naïveté
? Dépouillé de voyelles, cela devrait bien sûr êtreRn’s nvt
en sortie. On dirait que ces approches sont toutes assez naïves si vous me demandez. :)Réponses:
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.
la source
Brainfuck, 8 distincts (2121 au total)
Les caractères distict:
<>+-[],.
. Fonctionne avec des interprètes qui utilisent-1
pourEOF
.la source
Renée’s naïveté
devenirRń’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 raisonnableRené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! :)1.166921663690E+1824
octets 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.Espace, 3 points (218 caractères)
Tu savais que ça allait arriver.
(_ = espace, ⇥ = tabulation, ↲ = nouvelle ligne)
Voici le script encodé en base64:
Et voici le programme écrit sous forme d'assembleur visible:
la source
LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSSSSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLSTLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL
. Il semble que deux problèmes (entre autres) sont que vous essayez de pousser un 0 sur la pile en utilisantSSSL
au lieu deSSSSL
, et essayez également de définir une étiquette "vide" en utilisantLSSL
pourskip
.SED (10 octets distincts, 13 au total)
Exemple d'utilisation:
les sorties:
la source
I
est-il en majuscules? Cela fonctionne bien lorsque lesI
caractères sont en minuscules.I
personnage est réutilisé.ö
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 ,, :-)ö
etï
ont déjà été trouvées en anglais, bien qu'elles aient presque disparu maintenant.C,
222019 caractères distincts.Lettres nécessaires pour
main
,putchar
,getchar
= 12.Ponctuation -
(){};
= 5.Opérateurs -
&-
= 2.main
invoque 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
ii
le 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.
Peut - être peut - on améliorer encore, en compilant avec
gcc -nostartfiles
, et renommermain
à_start
.min
sont supprimés (après un certain changement de nom de variable),_s
ajoutés. Mais alors je dois utiliserexit()
, 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.la source
Perl: 8 ou 10 caractères distincts
s///
solution: 10 distinctes, 13 au totalLa technique sed (supposée; voir ci-dessous) fonctionne toujours aussi en perl, et donne le nombre de noms de caractères distincts (10):
Par exemple:
C'est 10 caractères distincts, comme cela le prouve:
Le problème avec la solution sed est qu'elle ne
/i
fait pas partie de POSIX sed et n'est donc pas portable:Cela fonctionne sur un système OpenBSD. En revanche, comme il
/i
fait 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:
Et c'est maintenant 14 caractères au total.
tr[][]
solution: 8 distincts 10 au totalVous pouvez également utiliser
tr///
pour supprimer tout ce qui correspond. Perl peut même utiliser l'y///
alias de sed pourtr
: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:
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:Il ne s'agit donc que des 8 originaux distincts sur un total de 11:
EDIT : Comptabilisation des diacritiques
Et qu'en est-il des entrées
Renée’s naïveté
? La sortie correcte devrait bien sûr êtreRn’s nvt
. Voici comment faire cela, en utilisant le/r
drapeau de la v5.14 pours///
:C'est 27 caractères distincts:
Vous pouvez couper que 26 si vous pouvez garantir que vous utilisez au moins v5.10 en échangeant le
print
poursay
:Et vous pouvez le ramener à 22 si cela ne vous dérange pas de déplacer les diacritiques au lieu de les supprimer:
Ce qui est ... intéressant à regarder, c'est le moins qu'on puisse dire. :) Voici son compte distinct:
Bonne chance pour obtenir une autre langue pour gérer correctement les signes diacritiques en utilisant moins de caractères que cela!
la source
"ɢᴏᴏᴅ ᴘ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"
.ø
.Renée’s naïveté
devrait donnerRné’s nïvté
.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:
12 octets distincts, 13 au total:
la source
Golfscript (8 octets distincts, 837 au total)
Explication:
[97 101 105 111 117 65 69 73 79 85]
(correspondant aux codes ASCII dea,e,i,o,u,A,E,I,O,U
). Chaque nombre est représenté en poussant sur la pile la valeur9
, suivi du nombre nécessaire de)
(opérateurs d'incrémentation). Par exemple, le nombre67
est obtenu en utilisant9
et 58)
s''+
, le tableau est converti en chaîne"a,e,i,o,u,A,E,I,O,U"
, représentant toutes les voyellesLes 8 caractères uniques qui ont été utilisés:
[
,]
,9
,)
,+
,-
,'
et(space)
la source
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.
la source
VBA -
2522 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
*
,,,1
permet d'ignorer la casse. (1
représente la constantevbTextCompare
)la source
E
enEnd Sub
. Mais assez sympa, vu que c'est Basic.E
, et je l'ai corrigé. Je pense que j'étais trop inquiet pour la viande du Sub. ;-)e
ouE
?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)
avec mon compte 18?Replace(s1,)"uOI
octets distincts et 111 octets au totalPython 3.x, 19 caractères distincts, 62 au total
la source
Renée’s naïveté
, vous savez.J, 21 caractères (18 distincts)
la source
K, 29. (18 octets distincts)
octets distincts: {@ & ~ (: 0) dans _, "AEIOU}
la source
ASM - 6 caractères distincts 520 caractères source (MsDOS .com)
Assemblé en utilisant A86
la source
MATL, 8 octets (tous distincts)
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.
13Y2
est un littéral contenantaeiouAEIOU
.Prenez un duplicata
t
de la chaîne d'entrée, créez un tableau logique (booléen) indiquant quelles lettres de l'entrée ne sont pas (~
) desm
braises de ce littéral, et indexez ()
) à ces endroits, pour renvoyer un tableau de caractères non-voyelle uniquement.la source
PHP - 30 octets distincts
la source
/[aeiou|AEIOU]/
en/[aeiou]/i
? De plus, votre code fait également|
disparaître.bash 26 distincts, 37 au total
trié:
Résultat (conserve les sauts de ligne):
Pour tr, on ne sait pas comment compter: '-d aeiouAEIOU' comme 10 ou 13:
la source
tr -d aeiouAEIOU
15.Python (23)
Quelqu'un devait le faire.
la source
F #
10512191 caractèresla source
Formule Excel - 19 octets distincts (196 au total)
=
,S
,B
,T
,(
,)
,,
,"
,a
,e
,i
,o
,u
,A
,E
,I
,O
,U
,1
* 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.
la source
Noether, 16 octets individuels (17 au total)
Essayez-le en ligne!
Utilise l'expression régulière
pour supprimer les voyelles de la chaîne d'entrée.
la source
K (oK) , 16 octets, 14 distincts
Solution:
Essayez-le en ligne!
Explication:
Utiliser except (
^
) pour filtrer les voyelles.la source