Entfernen Sie Vokale, ohne zu viele verschiedene Zeichen zu verwenden

11

Die Herausforderung besteht darin, Vokale (a, e, i, o, u) aus der Zeichenfolge von STDIN zu entfernen (ja, ich weiß, einfach). Sie können davon ausgehen, dass Ihr Programm nicht mit Argumenten ausgeführt wird argv.

Beispiel:

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

Wird geändert in:

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

Es gibt einen Haken. Der Gewinner wird anhand der Anzahl der verschiedenen Bytes ermittelt. Zum Beispiel a abhat drei unterschiedliche Bytes ( a, bund Raum). Wenn zwei oder mehr Einträge dieselbe Anzahl unterschiedlicher Bytes haben, wird auf die Anzahl der Bytes für diese Einträge zurückgegriffen.

Konrad Borowski
quelle
9
Ein Job für Whitespace-Sprache
jfs
Was ist mit Input Renée’s naïveté? Ohne Vokale sollte das natürlich Rn’s nvtals Ausgabe sein. Diese Ansätze scheinen alle ziemlich naiv zu sein, wenn Sie mich fragen. :)
tchrist
Wenn Sie é entfernen, möchten Sie möglicherweise auch y entfernen.
Benutzer unbekannt
4
@ tchrist, lies die Frage. Sagt, a, e, i, o, u zu entfernen. Du bist nicht zum Thema, bitte lass es fallen.
Stand
1
@tchrist: Besonders die Herausforderung sagte nicht "alle Vokale" und zählte auf, was wir als entfernbar betrachten sollten.
Benutzer unbekannt

Antworten:

2

Binäres Leerzeichen (2 verschiedene Zeichen, insgesamt 324 Zeichen)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

wobei S, T, L jeweils Space, Tab, Linefeed bezeichnet. (Schamlos erhalten durch Konvertieren der Whitespace-Antwort durch "Breadbox" in Binary Whitespace - dieser Beitrag sollte wahrscheinlich ein Kommentar zu seiner Antwort sein, aber er ist zu lang.)

Binary Whitespace ist ein Whitespace , der überall mit TS anstelle von T und TT anstelle von L in eine Präfixcodesprache konvertiert wird. Beispiel: Die BWS-Anweisung zum Verschieben von -5 auf den Stapel lautet SSTSTSSTSTT anstelle von SSTTSTL usw. Link: Ein bidirektionaler Übersetzer für eine beliebige 3-Symbol-Sprache und ihre binären Präfixcode-Versionen .

NB: Es wäre einfach , ein wahres Design bitweise Interpreter für Binary Whitespace - Programme wie angesehen Bit -Sequenzen, anstatt char-Sequenzen (zB mit 0,1 Bit-Werten anstelle von S, T Zeichen, respectively). Das obige wäre dann ein 324- Bit- Programm, das 41 Bytes Speicher benötigt.

res
quelle
13

Brainfuck, 8 verschiedene (2121 insgesamt)

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

Die unterschiedlichen Zeichen : <>+-[],.. Funktioniert mit Dolmetschern, die -1für verwenden EOF.

$ echo '
Dieses Programm entfernt Vokale.
So können wir jetzt ohne sie sprechen.
'| bf vokal-rm.bf

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

hörte auf, gegen den Uhrzeigersinn zu drehen
quelle
1
Nach den angegebenen Anforderungen ist dies die beste Antwort. Aber OTOH ist das Schlimmste, da es jedes syntaktisch signifikante Zeichen in seiner Sprache verwendet.
dan04
3
@tchrist: Es wird ASCII vorausgesetzt. Auf jeden Fall sind nur {a, e, i, o, u} in den Anforderungen enthalten.
Jon Purdy
1
So ist es in Ordnung zu verwandeln Renée’s naïvetéin Rń’s n̈vt́, dann? Das scheint mir nicht richtig zu sein, aber wenn du es sagst. Da Sie keine Normalisierung annehmen können, ist es durchaus vernünftig, dass dies Renée’s naïvetéwirklich der Fall ist "Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"- oder wenn Sie magische Zahlen bevorzugen "Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}". Wenn Sie die Vokale ohne die damit verbundenen diakritischen Zeichen entfernen, erhalten Sie extreme Albernheit. Willkommen im Brave New Millennium! :)
tchrist
1
Verwenden Sie Unary, Sie hätten nur einen bestimmten Charakter! :-P esolangs.org/wiki/Unary
marinus
3
@marinus, ich habe dies in Unary konvertiert und ich brauchte nur 1.166921663690E+1824Bytes, um es zu speichern (ich habe die genaue Nummer in Pastebin hochgeladen , es würde nicht in diesen Kommentar passen). Ich frage mich, wie viel Zeit es dauern würde, es an diese Site zu senden.
Konrad Borowski
10

Leerzeichen, 3 Punkte (218 Zeichen)

Sie wussten, dass es kommen würde.

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

(_ = Leerzeichen, ⇥ = Tabulator, ↲ = Zeilenumbruch)

Hier ist das in base64 codierte Skript:

CiAgIAogICAgCgkKCSAgICAgCiAgIAkgICAgIAkKICAgCSAgIAkgCQogICAJICAJICAJCiAgIAkg
IAkJCQkKICAgCSAJIAkgCQogICAJCSAgICAJCiAgIAkJICAJIAkKICAgCQkgCSAgCQogICAJCSAJ
CQkJCiAgIAkJCSAJIAkKCiAgIAkKIAogCgkgCQogICAgCgkJCQkgIAkKCSAKCiAKIAkKCiAgCgoJ
ICAKCiAKCgogIAkKICAgIAoJCQkgCiAKCSAgIAoJCiAgCiAKIAoKICAgIAoKCgo=

Und hier ist das Programm, das in sichtbarer Assembler-ähnlicher Form geschrieben ist:

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
Brot-Box
quelle
Riecht für mich nach Acme :: Bleach . :)
tchrist
Wenn ich Ihr "symbolisches" Programm in Whitespace konvertiere, treten schwerwiegende Syntaxfehler auf.
Res
Das ist seltsam. Haben Sie daran gedacht, die eigentlichen Zeilenumbrüche vor der Konvertierung zu entfernen? Ich sollte nur eine Base64-Codierung des eigentlichen Skripts einfügen.
Brotkasten
1
Ja, das habe ich getan - Ihre base64-Version dekodiert genau das, was ich verwende. Hier ist eine "STL" -Version (mit S-, T-, L-Codierungsraum, Tabulator bzw. Zeilenvorschub) : LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL. Es scheint, dass zwei Probleme (unter anderem) darin bestehen, dass Sie versuchen, eine 0 mit SSSLstatt auf den Stapel zu schieben SSSSL, und auch versuchen, ein "leeres" Etikett mit LSSLfor zu definieren skip.
Res
1
Entschuldigung für die Verzögerung ... Ich habe gerade bestätigt, dass Edwin Bradys Version 0.3 (Linux-Binärdatei) des Whitespace-Interpreters Ihr Programm tatsächlich ohne Beanstandung ausführt . Ich habe die Ruby-Implementierung (verfügbar auf derselben Seite) verwendet, die die von Ihnen verwendete Syntax nicht zulässt.
Res
8

SED (10 verschiedene Bytes, insgesamt 13)

s/[aeIou]//gI

Beispielnutzung:

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

Ausgänge:

Th qck brwn fx jmps vr th lzy dg.
Cristian Lupascu
quelle
Ich frage mich nur, warum Iist Großbuchstaben? Es funktioniert gut, wenn IZeichen in Kleinbuchstaben geschrieben sind.
Konrad Borowski
2
@GlitchMr Ich habe das nur gemacht, um zu betonen, dass der ICharakter wiederverwendet wird.
Cristian Lupascu
1
@tchrist Ich glaube nicht, dass das OP französische Vokale in seinem Beitrag erwähnt hat. Außerdem schreibe ich gerne naive Programme. :-)
Cristian Lupascu
3
Ich bin mir ziemlich sicher öund werde ïin Ihrem Beispiel missbraucht und die anderen beiden sind Konsonanten. Trotzdem denke ich, dass Sie einen Punkt haben. Aber auf diese Weise können wir am Ende auch ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮ unterstützen; vielleicht sogar ,, slǝʍoʌ uʍop ǝpısdn ,, :-)
Cristian Lupascu
1
@ w0lf, diese Verwendungen von öund ïwurden einmal auf Englisch gefunden, obwohl sie jetzt fast verschwunden sind.
Joe
7

C, 22 20 19 verschiedene Zeichen.

Buchstaben , die für main, putchar, getchar= 12.
Interpunktion - (){};= 5.
Operatoren - &-= 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);
}

mainruft undefiniertes Verhalten auf (zu viel --in einer Zeile).
Der Ausdruckswert ist mir egal und er dekrementiert iidie richtige Anzahl von Malen.
Kann leicht durch Trennen der Dekremente mit repariert werden ;. Aber es ist so viel schöner wie es ist.

Alte Version, 20 Zeichen:
Eigentlich 21, weil ich nicht bemerkt habe, dass einige Leerzeichen signifikant sind und gezählt werden müssen, aber sie können leicht durch Klammern ersetzt werden.

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

Kann vielleicht weiter verbessert werden, durch Kompilieren mit gcc -nostartfilesund Umbenennen mainzu _start. minwerden entfernt (nach einer Umbenennung der Variablen), _shinzugefügt. Aber dann muss ich verwenden exit(), was 3 Zeichen hinzufügt.
Stattdessen _startkann ein beliebiger Name verwendet werden, der unter Linux funktioniert. Dies ermöglicht eine Reduzierung auf 18 Zeichen, ist jedoch sehr unüblich.

ugoren
quelle
6

Perl: 8 oder 10 verschiedene Zeichen

s/// Lösung: 10 verschiedene, 13 insgesamt

Die (angebliche; siehe unten) sed-Technik funktioniert immer auch in Perl und liefert die Namensnummer der verschiedenen Zeichen (10):

s/[aeiou]//gi

Beispielsweise:

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

Das sind 10 verschiedene Zeichen, wie dies beweist:

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

Das Problem mit der sed - Lösung ist , dass sein /iist nicht Teil von POSIX sed, und damit ist nicht tragbar:

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

Das läuft auf einem OpenBSD-System. Da im Gegensatz dazu /iist in der Tat immer Teil des Standard Perl, Sie können sie verlassen seine immer dort zu sein. Im Gegensatz zu sed.

Wenn Sie "y" in die Liste der Vokale aufnehmen möchten, ist es natürlich eins größer, wenn Sie dieselbe Technik verwenden:

$ 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

Und jetzt sind es insgesamt 14 Charaktere.

tr[][] Lösung: 8 verschiedene 10 insgesamt

Sie können auch tr///alles entfernen, was übereinstimmt. Perl kann sogar den y///Alias ​​von sed verwenden für tr:

y/aeiou//d

Das sind jetzt 8 verschiedene Zeichen, funktioniert aber nicht in Großbuchstaben. Am Ende müssen Sie 5 weitere Zeichen hinzufügen, um mit den Fallkarten fertig zu werden:

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

und natürlich sind das jetzt insgesamt 15.

Wenn Sie der Mischung jedoch als Vokal „y“ hinzufügen, erhöht sich die Anzahl der unterschiedlichen Zeichen nicht wie bei der 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.

Das sind also immer noch nur die ursprünglichen 8 von insgesamt 11:

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

EDIT : Bilanzierung von Diakritika

Und was ist mit Eingaben wie Renée’s naïveté? Die richtige Ausgabe sollte natürlich sein Rn’s nvt. So geht's mit dem /rFlag von v5.14 s///:

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

Das sind 27 verschiedene Zeichen:

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

Sie können , dass auf 26 trimmen , wenn Sie garantieren können , dass Sie mindestens v5.10 laufen durch das Auslagern printfür ein 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

Und Sie können es auf 22 reduzieren, wenn es Ihnen nichts ausmacht, die Diakritika zu verschieben, anstatt sie zu entfernen:

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

Welches ist ... interessant anzusehen, um es gelinde auszudrücken. :) Hier ist seine eindeutige Anzahl:

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

Viel Glück, dass jede andere Sprache mit weniger Zeichen richtig mit Diakritika umgeht!

tchrist
quelle
1
ɢᴏᴏᴅ ᴘₒᵢⁿᵗ αβουτ 𝐝𝐢𝐚𝐜𝐫𝐢𝐭𝐢𝐜𝐬 𝑦𝑜𝑢 𝒈𝒐𝒕 𝓽𝓱𝓮𝓻𝓮, 𝒷𝓋𝓉 𝔥𝔬𝔴 𝕒𝕓𝕠𝕦𝕥 𝘀𝘁𝘂𝗳𝗳 𝚕𝚒𝚔𝚎 𝕋ℍ𝕀𝕊?
hörte auf, gegen den Uhrzeigersinn
@leftaroundabout Das meiste davon wurde durch Festschreiben einer NFKD-Zerlegung behoben. Die Griechen zählen nicht, obwohl sie gleich aussehen, und die Smallcaps zerfallen nicht zu Stammgästen. Das Ergebnis ist "ɢᴏᴏᴅ ᴘnt αβουτ dcrtcs y gt thr, bvt hw bt stff lk THS"oder "\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
Aber gibt es einige lateinische Vokale, die keine Kompatibilitätszerlegungen haben, wie z ø.
Dan04
5
Herausforderung sagt nicht, Vokale mit Diakritika zu entfernen - nur a, e, i, o, u - Renée’s naïvetésollte also geben Rné’s nïvté.
Stand
2
Warum sollten griechische Vokale nicht zählen, wenn äèïóű usw. (nicht in [a, e, i, o, u]!) Tun? Oder kyrillisch (was keine Doppelgänger sind, aber sicher genug Vokale).
hörte auf, gegen den Uhrzeigersinn
5

GolfScript (7 verschiedene Bytes, insgesamt 103)

Ausreichend eine Verbesserung gegenüber der Antwort von w0lf , die meiner Meinung nach als separate Antwort zu qualifizieren ist:

[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 verschiedene Bytes, insgesamt 13:

'aeiouAEIOU'-
Peter Taylor
quelle
Groß! Ich wünschte, ich könnte dich wieder unterstützen.
Cristian Lupascu
4

Golfscript (8 verschiedene Bytes, insgesamt 837)

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

Erläuterung:

  1. Das Programm erstellt das folgende Array von Ganzzahlwerten: [97 101 105 111 117 65 69 73 79 85](entsprechend den ASCII-Codes von a,e,i,o,u,A,E,I,O,U). Jede Zahl wird dargestellt, indem der Wert auf den Stapel gedrückt wird 9, gefolgt von der erforderlichen Anzahl von )(Inkrementoperatoren). Zum Beispiel wird die Zahl 67unter Verwendung von 9und 58 )s erhalten
  2. Mit ''+wird das Array in eine Zeichenfolge konvertiert "a,e,i,o,u,A,E,I,O,U", die alle Vokale darstellt
  3. Das Subtraktionszeichen ('-') wird dann verwendet, um alle Vokale von der Quellzeichenfolge zu subtrahieren

Die 8 einzigartige Charaktere , die verwendet wurden: [, ], 9, ), +, -, 'und(space)

Cristian Lupascu
quelle
4

Unlesbar (2 verschiedene, insgesamt 2666)

Da jeder Turing-Tarpits postet, dachte ich, ich würde diesen verwenden. Es ist nicht sehr bekannt, aber es existiert ( http://esolangs.org/wiki/Unreadable ) und es hat nur zwei Zeichen.

'""""'""""'""""'""""""'"""'""'""'""'""'""'""'""'""'""'"""'""""'"""""'"""""""'"""'""""'"""
"'""""'""""""'"""'""""""""'"""""""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"""
"'""""""'""'""'"""'""'""'""'""'""'""'""'"""""""'""'""'"""'""""""'""'""'""'"""'""'""'""'""
'""'""'""'""'"""""""'""'""'""'"""'""""'""""'""""""'""'""'""'""'"""'""'""'""'""'""'""'""'"
"'""'"""""""'""'""'""'""'"""'""""""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""""
"""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""
'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""
'""'""'""'"""""""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'"""'"""""
"""'""""""""'"""""""'""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'"""'
""'""'"""""""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'"""'""""""""'""""
""""'""""""""'""""""""'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'"
"'"""""""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'""'"""'""""""""'""""""""'"""
""""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'"""'""""""""'""""""""'""""""""'"""""""
"'"""""""'""'""'""'""'"""'""""""'""'""'""'""'"""'"""""""'""'""'""'"""'""""'""""'""""""'""
'""'""'"""'""'""'""'""'"""""""'""'""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"
"""'""""""'"""'""'""""""""""'"""""'"""""""'"""'""""'""""'""""""'""'""'""'""'""'""'""'""'"
"'""'""'"""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'""""""""'"""'""""'"""""""""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""
""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'
""'""'""'""'""'""'""'""'"""'"""""""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'"""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'"""""""""'"""""""'""'""'""'
""'""'""'""'""'""'""'""'""'""'""'"""'"""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""
'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""
'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'"""""""'"
"'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'
""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""""'""'""'""'""'""'""'""'""'""'
""'""'"""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'""""""
""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'"""'"'""""""""'"""""""'"""'"""'""""""'"""'""'""""""""""
Marinus
quelle
(+1) Schön ... Ich habe es mit Ihrem Dolmetscher überprüft . Wird es immer noch als "nicht genehmigt" betrachtet, obwohl der Schöpfer dieser Sprache es genehmigt hat ? (Es scheint eine Schande, dass die Sprache nicht mit zwei Leerzeichen anstelle von einfachen und doppelten Anführungszeichen definiert wurde; o)))
res
@res Das sollte nicht schwer zu implementieren sein. Wählen Sie einfach zwei Leerzeichen aus und ändern Sie den Interpreter so, dass er zuerst die Leerzeichen durch einfache und doppelte Anführungszeichen ersetzt!
ComFreek
2

VBA - 25 22 verschiedene Bytes (insgesamt 120)

Ich weiß, dass dies nicht mit so vielen verschiedenen Bytes gewinnen wird, aber hier ist es in 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

* ,,,1ermöglicht das Ignorieren von Groß- und Kleinschreibung. ( 1repräsentiert die Konstante vbTextCompare)

Gaffi
quelle
Sie haben nicht das Zählen Ein End Sub. Aber ganz nett, wenn man bedenkt, dass es Basic ist.
hörte auf, gegen den Uhrzeigersinn
@leftaroundabout Danke! Absolut richtig E, und ich habe korrigiert. Ich glaube, ich war zu besorgt um das Fleisch des U-Bootes. ;-)
Gaffi
Da VBA als Sprache die automatische Formatierung unterstützt, können Sie Ihre Antwort in Kleinbuchstaben (oder Großbuchstaben) ändern, und VBA korrigiert dies selbst. Da akzeptiert wird, dass Sprachen zur automatischen Formatierung in Betracht gezogen werden können, bevor die automatische Formatierung erfolgt würde bedeuten, dass Sie entweder die eoderE
Taylor Scott
Sie könnten dies bis auf eine sofortige Fensterfunktion konfigurieren, wie ?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)bei meiner Zählung 18 Distinct Bytes ?Replace(s1,)"uOIund 111 Bytes insgesamt
Taylor Scott
1

Python 3.x, 19 verschiedene Zeichen, insgesamt 62

print(''.join(x for x in input() if x.lower() not in 'aeiou'))
dan04
quelle
Das funktioniert bei Eingängen wie nicht richtig Renée’s naïveté.
Tchrist
1

J, 21 Zeichen (18 verschiedene)

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

K, 29. (18 verschiedene Bytes)

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

verschiedene Bytes: {@ & ~ (: 0) in _, "AEIOU}

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

ASM - 6 verschiedene Zeichen 520 Quellzeichen (MsDOS .com)

Zusammengebaut mit 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
quelle
Schreiben Sie einfach die Maschinensprache, es werden zwei verschiedene Zeichen sein.
Ugoren
1

MATL, 8 Bytes (alle verschieden)

t13Y2m~)

Probieren Sie es auf MATL Online aus

Nur ein Straight-Up-Golf, fand keinen Trick, um Charaktere wiederzuverwenden, um die Anzahl der eindeutigen Bytes zu reduzieren.

13Y2ist ein wörtliches Enthalten aeiouAEIOU.

Nehmen Sie ein Duplikat tder Eingabezeichenfolge, erstellen Sie ein logisches (boolesches) Array, das angibt, welche Buchstaben der Eingabe keine ( ~) mGlut dieses Literals sind, und index ( )) an diesen Stellen, um ein Array mit nur Nicht-Vokalzeichen zurückzugeben.

Sundar - Monica wieder einsetzen
quelle
0

PHP - 30 verschiedene Bytes

<?=preg_replace('/[aeiou]/i','',fgets(STDIN));
l0n3sh4rk
quelle
1
Könnten Sie nicht ändern /[aeiou|AEIOU]/in /[aeiou]/i? Außerdem |verschwindet Ihr Code .
Konrad Borowski
0

Bash 26 verschiedene, 37 insgesamt

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

sortiert:

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

Ergebnis (bewahrt Linefeeds):

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.

Für tr ist nicht klar, wie man zählt: '-d aeiouAEIOU' als 10 oder 13:

echo "This program will remove VOWELS.
So we can now speak without them." | tr -d aeiouAEIOU
Benutzer unbekannt
quelle
Ich habe überlegt, tr zu verwenden, aber ich bin zu dem Schluss gekommen, dass es, da es keine Programmiersprache ist, in eine Shell eingewickelt werden muss, sodass der vollständige Text tr -d aeiouAEIOUfür 15 gezählt wird.
Peter Taylor
16 <! - Char-Threshold-Gymnastik ->
Benutzer unbekannt
15 verschiedene, 16 insgesamt.
Peter Taylor
0

Python (23)

Jemand musste es tun.

print filter(lambda x:x not in'aeiou',raw_input())
beary605
quelle
3
Das hat "nur" 23 verschiedene Zeichen. Funktioniert jedoch nicht mit Großbuchstaben.
hörte auf, gegen den Uhrzeigersinn zu drehen
Durch Hinzufügen eines neuen Zeichens und Ändern der Variablen von x in c oder s können Sie Kleinbuchstaben () (oder Großbuchstaben) verwenden und auch Großbuchstaben verwenden.
Fabikw
0

F # 105 121 91 Zeichen

Console.ReadLine()|>Seq.filter(fun c->not("aeiouAEIOU".Contains(c)))|>Seq.iter(printf"%c")
Smetad Anarkist
quelle
Hmmm ... Ich habe gerade bemerkt, dass dieser Code in Linqpad funktioniert, aber nicht in Visual Studio. Und da ich keine Lust habe, meinen eigenen Beitrag abzustimmen, werde ich ihn hier mit diesem Kommentar belassen, bis ich herausgefunden habe, was daran falsch ist.
Smetad Anarkist
0

Excel-Formel - 19 verschiedene Bytes (insgesamt 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","")

* Dies sind tatsächlich zu viele verschachtelte Funktionen, um in Excel 2003 zu funktionieren, aber das Konzept ist vorhanden.

Durch Aufteilen der Formeln in zwei Zellen wurde der gewünschte Effekt erzielt. - Ergebnis ist in C1.

Gaffi
quelle
0

Noether, 16 einzelne Bytes (insgesamt 17)

I"[aeiouAEIOU]"-P

Probieren Sie es online aus!

Verwendet den regulären Ausdruck

[aeiouAEIOU]

um die Vokale aus der Eingabezeichenfolge zu entfernen.

Beta-Zerfall
quelle
0

K (oK) , 16 Bytes, 14 verschiedene

Lösung:

^[;v,_v:"AEIOU"]

Probieren Sie es online aus!

Erläuterung:

Verwenden Sie Except ( ^), um die Vokale herauszufiltern.

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