Usuń samogłoski bez użycia zbyt wielu różnych znaków

10

Wyzwanie polega na usunięciu samogłosek (a, e, i, o, u) z łańcucha ze STDIN (tak, wiem, proste). Możesz spodziewać się, że twój program nie zostanie uruchomiony bez żadnych argumentów argv.

Przykład:

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

Zmienia się na:

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

Jest w tym jakiś haczyk. Zwycięski wpis jest wybierany na podstawie liczby różnych bajtów. Na przykład a abz trzech różnych bajtów ( a, bi masową). Jeśli dwa lub więcej wpisów będzie miało tę samą ilość różnych bajtów, nastąpi powrót do liczby bajtów dla tych wpisów.

Konrad Borowski
źródło
9
Praca dla języka Whitespace
jfs
A co z danymi wejściowymi Renée’s naïveté? Pozbawione samogłosek, powinno to być oczywiście Rn’s nvtwyjście. Wygląda na to, że te podejścia są dość naiwne, jeśli mnie o to poprosicie. :)
tchrist
Jeśli usuniesz é, możesz również chcieć usunąć y.
użytkownik nieznany
4
@ tchrist, przeczytaj pytanie. Mówi się usunąć a, e, i, o, u. Nie masz tematu, upuść to.
stoisko do
1
@tchrist: Zwłaszcza wyzwanie nie zawierało słów „wszystkie samogłoski” i wymieniało to, co powinniśmy uznać za usuwalne.
użytkownik nieznany

Odpowiedzi:

2

Binarne białe znaki (2 różne znaki, 324 znaki ogółem)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

gdzie S, T, L oznacza odpowiednio spację, tabulator, wysuw liniowy. (Bezwstydnie uzyskane przez konwersję odpowiedzi Białej spacji przez „breadbox” na Binarną Białą spację - ten post powinien być prawdopodobnie komentarzem do jego odpowiedzi, ale jest za długi.)

Binarne białe znaki to białe znaki konwertowane na język prefiksów, wszędzie za pomocą TS zamiast T i TT zamiast L; np. instrukcja BWS, aby wcisnąć -5 na stos, to SSTSTSSTSTT zamiast SSTTSTL itp. Łącze: Tłumacz dwukierunkowy dla dowolnego języka 3-symbolowego i jego binarnych wersji prefiksów .

NB: Byłoby proste zaprojektowanie prawdziwego interpretera bitowego dla programów Binarnych białych znaków traktowanych jako sekwencje bitów , a nie sekwencje znaków (np. Przy użyciu 0,1 wartości bitowych zamiast odpowiednio znaków S, T). Powyższe byłoby wówczas 324- bitowym programem wymagającym 41 bajtów pamięci.

res
źródło
13

Brainfuck, 8 odrębnych (łącznie 2121)

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

Znaki Distict: <>+-[],.. Współpracuje z tłumaczami, które wykorzystują -1do EOF.

$ echo '
Ten program usunie VOWELS.
Więc możemy teraz mówić bez nich.
„| bf samogłoska-

rm.bf Prgrm wll rmv VWLS.
S w cn nw spk wtht thm.

przestał się obracać w lewo
źródło
1
Zgodnie z podanymi wymogami jest to najlepsza odpowiedź; ale OTOH jest najgorsze, ponieważ używa każdego znaczącego pod względem składniowym znaku w swoim języku.
dan04
3
@tchrist: Zakłada ASCII. W każdym razie tylko {a, e, i, o, u} są w wymaganiach.
Jon Purdy
1
Więc to jest ok, aby włączyć Renée’s naïvetésię Rń’s n̈vt́, a potem? Nie wydaje mi się to właściwe, ale jeśli tak mówisz. Ponieważ nie można założyć, normalizacji, jest całkowicie uzasadnione, że Renée’s naïvetéjest naprawdę "Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"- lub jeśli wolisz magicznych liczb "Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}". Jeśli usuniesz samogłoski bez towarzyszących im znaków diakrytycznych, uzyskasz niezwykłą głupotę. Witamy w Brave New Millennium! :)
tchrist
1
Użyj Unary, będziesz miał tylko jedną wyraźną postać! :-P esolangs.org/wiki/Unary
marinus
3
@marinus, przekonwertowałem to na Unary i potrzebowałem tylko 1.166921663690E+1824bajtów do przechowywania (przesłałem dokładną liczbę do pastebin, nie zmieściłoby się w tym komentarzu). Zastanawiam się, ile czasu zajmie przesłanie go na tę stronę.
Konrad Borowski
10

Biała spacja, 3 punkty (218 znaków)

Wiedziałeś, że to nadchodzi.

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

(_ = spacja, ⇥ = tab, ↲ = nowa linia)

Oto skrypt zakodowany w base64:

CiAgIAogICAgCgkKCSAgICAgCiAgIAkgICAgIAkKICAgCSAgIAkgCQogICAJICAJICAJCiAgIAkg
IAkJCQkKICAgCSAJIAkgCQogICAJCSAgICAJCiAgIAkJICAJIAkKICAgCQkgCSAgCQogICAJCSAJ
CQkJCiAgIAkJCSAJIAkKCiAgIAkKIAogCgkgCQogICAgCgkJCQkgIAkKCSAKCiAKIAkKCiAgCgoJ
ICAKCiAKCgogIAkKICAgIAoJCQkgCiAKCSAgIAoJCiAgCiAKIAoKICAgIAoKCgo=

A oto program napisany w widocznej formie asemblera:

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
chlebak
źródło
Pachnie dla mnie Acme :: Bleach . :)
tchrist
Kiedy przekonwertuję twój „symboliczny” program na Whitespace, ma fatalne błędy składniowe.
res
To dziwne. Czy pamiętasz, aby usunąć rzeczywiste znaki nowej linii przed konwersją? Powinienem po prostu dołączyć kodowanie base64 rzeczywistego skryptu.
breadbox
1
Tak, zrobiłem to - twoja wersja base64 dekoduje dokładnie to, czego używam. Oto "STL" wersja (z S, T, L kodowania przestrzenno, Tab, wysuw odpowiednio) LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL. Wygląda na to, że dwa problemy (między innymi) polegają na tym, że próbujesz wypchnąć 0 na stos za pomocą SSSLzamiast SSSSL, a także próbujesz zdefiniować „pustą” etykietę za pomocą LSSLfor skip.
res
1
Przepraszam za opóźnienie ... Właśnie potwierdziłem, że rzeczywiście wersja 0.3 (binarna wersja systemu Linux) interpretera Whitespace Edwina Brady'ego rzeczywiście uruchamia twój program bez żadnych skarg. Korzystałem z implementacji Ruby (dostępnej na tej samej stronie), która nie pozwala na używanie składni.
res
8

SED (10 różnych bajtów, łącznie 13)

s/[aeIou]//gI

Przykładowe użycie:

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

wyjścia:

Th qck brwn fx jmps vr th lzy dg.
Cristian Lupascu
źródło
Zastanawiam się tylko, dlaczego Iwielkie litery? Działa dobrze, gdy Iznaki są małe.
Konrad Borowski
2
@GlitchMr Właśnie to zrobiłem, aby podkreślić, że Ipostać jest ponownie używana.
Cristian Lupascu
1
@ tchrist Nie sądzę, żeby OP wspomniał w swoim wpisie o francuskich samogłoskach. Lubię też pisać programy naiwne. :-)
Cristian Lupascu
3
Jestem całkiem pewny öi ïsą źle wykorzystane w twoim przykładzie, a pozostałe dwie to spółgłosek. Mimo to myślę, że masz rację. Ale w ten sposób możemy również wspierać ò̟̣̱͉̙t̟̣̱͉̙h̵̩e͓̥r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ͖̭̮o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮; może nawet ,, slǝʍoʌ uʍop ǝpısdn ,, :-)
Cristian Lupascu
1
@ w0lf, te zastosowania öi ïzostały kiedyś znalezione w języku angielskim, chociaż teraz prawie zniknęły.
Joe
7

C, 22 20 19 różnych znaków.

Litery potrzebne do main, putchar, getchar= 12.
interpunkcyjne - (){};= 5.
operatorów - &-= 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);
}

mainwywołuje niezdefiniowane zachowanie (za dużo --w jednym wierszu).
Nie dbam o wartość wyrażenia i zmniejsza iiona odpowiednią liczbę razy.
Można to łatwo naprawić, oddzielając dekrety za pomocą ;. Ale jest o wiele ładniejszy.

Stara wersja, 20 znaków:
Właściwie 21, ponieważ nie zauważyłem, że niektóre spacje są znaczące i należy je policzyć, ale można je łatwo zastąpić nawiasami.

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

Być może można go jeszcze ulepszyć, kompilując gcc -nostartfilesi zmieniając nazwę mainna _start. minsą usuwane (po zmianie nazwy zmiennej), _sdodawane. Ale potem muszę użyć exit(), który dodaje 3 znaki.
Zamiast tego _startmożna użyć dowolnej nazwy i działa ona w systemie Linux. Pozwala to zejść do 18 znaków, ale jest bardzo niestandardowy.

ugoren
źródło
6

Perl: 8 lub 10 różnych znaków

s/// rozwiązanie: 10 odrębnych, łącznie 13

(Podobno; patrz poniżej) technika sed zawsze działa również w Perlu i daje nazwę liczby różnych znaków (10):

s/[aeiou]//gi

Na przykład:

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

To 10 różnych znaków, co dowodzi:

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

Problem z rozwiązaniem sed polega na tym, że nie/i jest on częścią POSIX sed, a zatem nie jest przenośny:

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

To działa na systemie OpenBSD. W przeciwieństwie do tego, bo /ijest rzeczywiście zawsze częścią standardowego Perl, to może liczyć na jego zawsze będąc tam. W przeciwieństwie do sed.

Jeśli chcesz umieścić „y” na liście samogłosek, jest oczywiście o jeden większy, jeśli używasz tej samej techniki:

$ 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

I jest teraz 14 całkowitych postaci.

tr[][] rozwiązanie: 8 odrębnych 10 ogółem

Możesz także użyć tr///do usunięcia wszystkiego, co pasuje. Perl może nawet używać y///aliasu sed do tr:

y/aeiou//d

który ma teraz 8 różnych znaków, ale nie działa na wielkie litery. W końcu musisz dodać 5 dodatkowych znaków, aby poradzić sobie z mapami wielkości liter:

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

i oczywiście jest to teraz 15.

Jednak dodanie „y” do miksu jako samogłoski nie zwiększa liczby różnych znaków, tak jak w przypadku s///wersji:

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

To wciąż tylko oryginalna 8 odrębnych z 11 wszystkich:

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

EDYCJA : Rachunkowość dla znaków diakrytycznych

A co z danymi wejściowymi Renée’s naïveté? Prawidłowe wyjście powinno oczywiście być Rn’s nvt. Oto jak to zrobić, używając /rflagi v5.14 dla s///:

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

To 27 różnych znaków:

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

Możesz to skrócić do 26, jeśli możesz zagwarantować, że korzystasz z wersji co najmniej v5.10, zamieniając printna 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

Możesz obniżyć go do 22, jeśli nie masz nic przeciwko przeniesieniu znaków diakrytycznych zamiast ich usuwania:

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

Co jest ... interesujący dla oka, co najmniej. :) Oto jego odrębna liczba:

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

Powodzenia, jeśli jakikolwiek inny język poprawnie radzi sobie z znakami diakrytycznymi przy użyciu mniejszej liczby znaków!

tchrist
źródło
1
ᴘₒᵢⁿᵗ ᴘₒᵢⁿᵗ αβουτ 𝐝𝐢𝐚𝐜𝐫𝐢𝐭𝐢𝐜𝐬 𝑦𝑜𝑢 𝒈𝒐𝒕 𝓽𝓱𝓮𝓻𝓮, 𝒷𝓋𝓉 𝔥𝔬𝔴 𝕒𝕓𝕠𝕦𝕥 𝘀𝘁𝘂𝗳𝗳 𝚕𝚒𝚔𝚎 𝕋ℍ𝕀𝕊?
przestał się obracać w lewo
@leftaroundabout Większość z nich została naprawiona przez zatwierdzenie rozkładu NFKD. Grecy nie liczą się, choć wyglądają podobnie, a małe czapki nie rozkładają się na regularnych. Wynikiem jest "ɢᴏᴏᴅ ᴘnt αβουτ dcrtcs y gt thr, bvt hw bt stff lk THS"lub "\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
Ale czy istnieją pewne samogłoski łacińskie, które nie mają dekompozycji kompatybilności, takie jak ø.
dan04
5
wyzwanie nie mówi o usuwaniu samogłosek za pomocą znaków diakrytycznych - wystarczy a, e, i, o, u - więc Renée’s naïvetépowinno dać Rné’s nïvté.
stoisko do
2
Dlaczego samogłoski greckie nie miałyby znaczenia, skoro äèïóű itp. (Nie w [a, e, i, o, u]!)? Lub cyrylica, jeśli o to chodzi (które nie są podobne, ale z pewnością wystarczą samogłosek).
przestał się obracać w lewo
5

GolfScript (7 różnych bajtów, łącznie 103)

Wystarczająco duża poprawa w porównaniu z odpowiedzią w0lf , która moim zdaniem kwalifikuje się jako osobna:

[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 różnych bajtów, łącznie 13:

'aeiouAEIOU'-
Peter Taylor
źródło
Świetny! Chciałbym móc jeszcze raz cię głosować.
Cristian Lupascu
4

Golfscript (8 różnych bajtów, łącznie 837)

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

Wyjaśnienie:

  1. Program tworzy następującą tablicę wartości całkowitych: [97 101 105 111 117 65 69 73 79 85](odpowiadających kodom ASCII z a,e,i,o,u,A,E,I,O,U). Każda liczba jest reprezentowana przez wypychanie stosu wartości 9, a następnie wymaganej liczby )(operatorów inkrementacji). Na przykład liczbę 67uzyskuje się za pomocą 9i 58 )s
  2. Za ''+pomocą tablica jest konwertowana na ciąg znaków "a,e,i,o,u,A,E,I,O,U"reprezentujący wszystkie samogłoski
  3. Następnie odejmuje się znak odejmowania („-”), aby odjąć wszystkie samogłoski od ciągu źródłowego

W 8 unikalnych znaków, które zostały wykorzystane: [, ], 9, ), +, -, 'i(space)

Cristian Lupascu
źródło
4

Nieczytelne (2 różne, łącznie 2666)

Ponieważ wszyscy publikują plandeki Turinga, pomyślałem, że skorzystam z tego. Nie jest to zbyt dobrze znany, ale istnieje ( http://esolangs.org/wiki/Unreadable ) i ma tylko dwa znaki.

'""""'""""'""""'""""""'"""'""'""'""'""'""'""'""'""'""'"""'""""'"""""'"""""""'"""'""""'"""
"'""""'""""""'"""'""""""""'"""""""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"""
"'""""""'""'""'"""'""'""'""'""'""'""'""'"""""""'""'""'"""'""""""'""'""'""'"""'""'""'""'""
'""'""'""'""'"""""""'""'""'""'"""'""""'""""'""""""'""'""'""'""'"""'""'""'""'""'""'""'""'"
"'""'"""""""'""'""'""'""'"""'""""""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""""
"""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""
'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""
'""'""'""'"""""""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'"""'"""""
"""'""""""""'"""""""'""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'"""'
""'""'"""""""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'"""'""""""""'""""
""""'""""""""'""""""""'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'"
"'"""""""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'""'"""'""""""""'""""""""'"""
""""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'"""'""""""""'""""""""'""""""""'"""""""
"'"""""""'""'""'""'""'"""'""""""'""'""'""'""'"""'"""""""'""'""'""'"""'""""'""""'""""""'""
'""'""'"""'""'""'""'""'"""""""'""'""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"
"""'""""""'"""'""'""""""""""'"""""'"""""""'"""'""""'""""'""""""'""'""'""'""'""'""'""'""'"
"'""'""'"""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'""""""""'"""'""""'"""""""""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""
""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'
""'""'""'""'""'""'""'""'"""'"""""""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'"""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'"""""""""'"""""""'""'""'""'
""'""'""'""'""'""'""'""'""'""'""'"""'"""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""
'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""
'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'"""""""'"
"'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'
""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""""'""'""'""'""'""'""'""'""'""'
""'""'"""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'""""""
""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'"""'"'""""""""'"""""""'"""'"""'""""""'"""'""'""""""""""
marinus
źródło
(+1) Fajnie ... Sprawdziłem to z twoim tłumaczem . Czy nadal jest uważany za „niezatwierdzony”, nawet jeśli twórca tego języka go zaakceptował ? (Szkoda, że ​​język nie został zdefiniowany przy użyciu dwóch białych znaków zamiast pojedynczych i podwójnych cudzysłowów; o)))
res
@res To nie powinno być trudne do wdrożenia. Wystarczy wybrać dwie białe spacje i zmodyfikować interpreter, aby początkowo zastępował białe spacje pojedynczymi i podwójnymi cudzysłowami!
ComFreek
2

VBA - 25 22 różnych bajtów (łącznie 120)

Wiem, że to nie wygra z tyloma różnymi bajtami, ale tutaj jest w 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

* ,,,1pozwala zignorować wielkość liter. ( 1reprezentuje stałą vbTextCompare)

Gaffi
źródło
Nie liczyć Ein End Sub. Ale całkiem niezłe, biorąc pod uwagę, że jest to Basic.
przestał się obracać przeciwnie do zegara
@leftaroundabout Thanks! Absolutnie słusznie Ei poprawiłem. Myślę, że zbyt martwiłem się mięsem łodzi podwodnej. ;-)
Gaffi
W rzeczywistości, ponieważ VBA jako język obsługuje autoformatowanie, możesz zmienić swoją odpowiedź na małe lub duże litery, a VBA sam się poprawi, a ponieważ zaakceptowano, że języki autoformatowania można rozważyć przed wystąpieniem autoformatowania, oznaczałoby to, że można odrzucić albo się elubE
Taylor Scott
możesz to skonfigurować do funkcji bezpośredniego okna, jak ?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)według mojego obliczenia 18 odrębnych bajtów ?Replace(s1,)"uOIi 111 bajtów ogółem
Taylor Scott
1

Python 3.x, 19 różnych znaków, w sumie 62

print(''.join(x for x in input() if x.lower() not in 'aeiou'))
dan04
źródło
To nie działa poprawnie na wejściach takich jak Renée’s naïveté, wiesz.
tchrist
1

J, 21 znaków (18 różnych)

'AEIOUaeiou'-.~1!:1[1
Gareth
źródło
1

K, 29. (18 różnych bajtów)

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

odrębne bajty: {@ & ~ (: 0) w _, „AEIOU}

k){i@&~(i:0:0)in(_i),i:"AEIOU"}`
Hello WoOOrld
"Hll Wrld"
tartin
źródło
1

ASM - 6 różnych znaków 520 znaków źródłowych (MsDOS. Com)

Zmontowane za pomocą 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
źródło
Po prostu napisz język maszynowy, będą to dwa różne znaki.
ugoren
1

MATL, 8 bajtów (wszystkie różne)

t13Y2m~)

Wypróbuj na MATL Online

Po prostu golf, naprawdę nie znalazł żadnej sztuczki, aby ponownie wykorzystać postacie, aby zmniejszyć unikalną liczbę bajtów.

13Y2jest dosłownie zawierający aeiouAEIOU.

Weź duplikat tciągu wejściowego, utwórz logiczną (boolowską) tablicę wskazującą, które litery wejścia nie są ( ~) mżarami tego literału, i indeks ( )) w tych miejscach, aby zwrócić tablicę tylko znaków innych niż samogłoska.

sundar - Przywróć Monikę
źródło
0

PHP - 30 różnych bajtów

<?=preg_replace('/[aeiou]/i','',fgets(STDIN));
l0n3sh4rk
źródło
1
Nie można zmienić /[aeiou|AEIOU]/w /[aeiou]/i? Twój kod również powoduje |zniknięcie.
Konrad Borowski
0

uderzenie 26 różnych, 37 ogółem

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

posortowane:

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

Wynik (zachowuje podawanie linii):

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.

W przypadku tr nie jest jasne, jak liczyć: „-d aeiouAEIOU” jako 10 lub 13:

echo "This program will remove VOWELS.
So we can now speak without them." | tr -d aeiouAEIOU
nieznany użytkownik
źródło
Zastanawiałem się nad użyciem tr, ale doszedłem do wniosku, że ponieważ nie jest to język programowania, musiałby być owinięty w powłokę, więc policzyłby pełny tekst tr -d aeiouAEIOUna 15.
Peter Taylor
16 <! - char-próg-gimnastyka ->
użytkownik nieznany
15 odrębnych, 16 ogółem.
Peter Taylor
0

Python (23)

Ktoś musiał to zrobić.

print filter(lambda x:x not in'aeiou',raw_input())
beary605
źródło
3
Ma „tylko” 23 różne znaki. Ale nie działa na samogłosek dużych liter.
przestał się obracać przeciwnie do zegara
Dodając jeden nowy znak i zmieniając zmienną z x na c lub s, możesz używać małych liter () (lub wielkich liter) i radzić sobie również z samogłoskami pisanymi dużymi literami.
fabikw
0

F # 105 121 91 znaków

Console.ReadLine()|>Seq.filter(fun c->not("aeiouAEIOU".Contains(c)))|>Seq.iter(printf"%c")
Smetad Anarkist
źródło
Hmmm ... Właśnie zauważyłem, że ten kod będzie działał w Linqpad, ale nie w Visual Studio. A ponieważ nie mam ochoty głosować z własnej woli, zostawię to tutaj z tym komentarzem, dopóki nie zorientuję się, co jest z nim nie tak.
Smetad Anarkist
0

Formuła Excel - 19 różnych bajtów (łącznie 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","")

* W rzeczywistości jest to zbyt wiele zagnieżdżonych funkcji, aby mogły działać w programie Excel 2003, ale koncepcja istnieje.

Podział formuł na dwie komórki osiągnął pożądany efekt. - Wynik jest w C1.

Gaffi
źródło
0

Noether, 16 pojedynczych bajtów (łącznie 17)

I"[aeiouAEIOU]"-P

Wypróbuj online!

Używa wyrażenia regularnego

[aeiouAEIOU]

aby usunąć samogłoski z ciągu wejściowego.

Rozpad beta
źródło
0

K (oK) , 16 bajtów, 14 różnych

Rozwiązanie:

^[;v,_v:"AEIOU"]

Wypróbuj online!

Wyjaśnienie:

Używanie wyjątku ( ^) do odfiltrowania samogłosek.

^[;v,_v:"AEIOU"] / the solution
^[;            ] / except (^) projection
      v:"AEIOU"  / save vowels as v
     _           / lowercase (_), "AEIOU" => "aeiou"
    ,            / join (,)
   v             / uppercase vowels
streetster
źródło