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 ab
z trzech różnych bajtów ( a
, b
i 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.
code-challenge
string
Konrad Borowski
źródło
źródło
Renée’s naïveté
? Pozbawione samogłosek, powinno to być oczywiścieRn’s nvt
wyjście. Wygląda na to, że te podejścia są dość naiwne, jeśli mnie o to poprosicie. :)Odpowiedzi:
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.
źródło
Brainfuck, 8 odrębnych (łącznie 2121)
Znaki Distict:
<>+-[],.
. Współpracuje z tłumaczami, które wykorzystują-1
doEOF
.źródło
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, żeRené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! :)1.166921663690E+1824
bajtó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ę.Biała spacja, 3 punkty (218 znaków)
Wiedziałeś, że to nadchodzi.
(_ = spacja, ⇥ = tab, ↲ = nowa linia)
Oto skrypt zakodowany w base64:
A oto program napisany w widocznej formie asemblera:
źródło
LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSSSSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLSTLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL
. Wygląda na to, że dwa problemy (między innymi) polegają na tym, że próbujesz wypchnąć 0 na stos za pomocąSSSL
zamiastSSSSL
, a także próbujesz zdefiniować „pustą” etykietę za pomocąLSSL
forskip
.SED (10 różnych bajtów, łącznie 13)
Przykładowe użycie:
wyjścia:
źródło
I
wielkie litery? Działa dobrze, gdyI
znaki są małe.I
postać jest ponownie używana.ö
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 ,, :-)ö
iï
zostały kiedyś znalezione w języku angielskim, chociaż teraz prawie zniknęły.C,
222019 różnych znaków.Litery potrzebne do
main
,putchar
,getchar
= 12.interpunkcyjne -
(){};
= 5.operatorów -
&-
= 2.main
wywołuje niezdefiniowane zachowanie (za dużo--
w jednym wierszu).Nie dbam o wartość wyrażenia i zmniejsza
ii
ona 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.
Być może można go jeszcze ulepszyć, kompilując
gcc -nostartfiles
i zmieniając nazwęmain
na_start
.min
są usuwane (po zmianie nazwy zmiennej),_s
dodawane. Ale potem muszę użyćexit()
, który dodaje 3 znaki.Zamiast tego
_start
można użyć dowolnej nazwy i działa ona w systemie Linux. Pozwala to zejść do 18 znaków, ale jest bardzo niestandardowy.źródło
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):
Na przykład:
To 10 różnych znaków, co dowodzi:
Problem z rozwiązaniem sed polega na tym, że nie
/i
jest on częścią POSIX sed, a zatem nie jest przenośny:To działa na systemie OpenBSD. W przeciwieństwie do tego, bo
/i
jest 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:
I jest teraz 14 całkowitych postaci.
tr[][]
rozwiązanie: 8 odrębnych 10 ogółemMożesz także użyć
tr///
do usunięcia wszystkiego, co pasuje. Perl może nawet używaćy///
aliasu sed dotr
: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:
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:To wciąż tylko oryginalna 8 odrębnych z 11 wszystkich:
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/r
flagi v5.14 dlas///
:To 27 różnych znaków:
Możesz to skrócić do 26, jeśli możesz zagwarantować, że korzystasz z wersji co najmniej v5.10, zamieniając
print
nasay
:Możesz obniżyć go do 22, jeśli nie masz nic przeciwko przeniesieniu znaków diakrytycznych zamiast ich usuwania:
Co jest ... interesujący dla oka, co najmniej. :) Oto jego odrębna liczba:
Powodzenia, jeśli jakikolwiek inny język poprawnie radzi sobie z znakami diakrytycznymi przy użyciu mniejszej liczby znaków!
źródło
"ɢᴏᴏᴅ ᴘ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"
.ø
.Renée’s naïveté
powinno daćRné’s nïvté
.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:
12 różnych bajtów, łącznie 13:
źródło
Golfscript (8 różnych bajtów, łącznie 837)
Wyjaśnienie:
[97 101 105 111 117 65 69 73 79 85]
(odpowiadających kodom ASCII za,e,i,o,u,A,E,I,O,U
). Każda liczba jest reprezentowana przez wypychanie stosu wartości9
, a następnie wymaganej liczby)
(operatorów inkrementacji). Na przykład liczbę67
uzyskuje się za pomocą9
i 58)
s''+
pomocą tablica jest konwertowana na ciąg znaków"a,e,i,o,u,A,E,I,O,U"
reprezentujący wszystkie samogłoskiW 8 unikalnych znaków, które zostały wykorzystane:
[
,]
,9
,)
,+
,-
,'
i(space)
źródło
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.
źródło
VBA -
2522 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
*
,,,1
pozwala zignorować wielkość liter. (1
reprezentuje stałąvbTextCompare
)źródło
E
inEnd Sub
. Ale całkiem niezłe, biorąc pod uwagę, że jest to Basic.E
i poprawiłem. Myślę, że zbyt martwiłem się mięsem łodzi podwodnej. ;-)e
lubE
?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,)"uOI
i 111 bajtów ogółemPython 3.x, 19 różnych znaków, w sumie 62
źródło
Renée’s naïveté
, wiesz.J, 21 znaków (18 różnych)
źródło
K, 29. (18 różnych bajtów)
odrębne bajty: {@ & ~ (: 0) w _, „AEIOU}
źródło
ASM - 6 różnych znaków 520 znaków źródłowych (MsDOS. Com)
Zmontowane za pomocą A86
źródło
MATL, 8 bajtów (wszystkie różne)
Wypróbuj na MATL Online
Po prostu golf, naprawdę nie znalazł żadnej sztuczki, aby ponownie wykorzystać postacie, aby zmniejszyć unikalną liczbę bajtów.
13Y2
jest dosłownie zawierającyaeiouAEIOU
.Weź duplikat
t
cią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.źródło
PHP - 30 różnych bajtów
źródło
/[aeiou|AEIOU]/
w/[aeiou]/i
? Twój kod również powoduje|
zniknięcie.uderzenie 26 różnych, 37 ogółem
posortowane:
Wynik (zachowuje podawanie linii):
W przypadku tr nie jest jasne, jak liczyć: „-d aeiouAEIOU” jako 10 lub 13:
źródło
tr -d aeiouAEIOU
na 15.Python (23)
Ktoś musiał to zrobić.
źródło
F #
105 12191 znakówźródło
Formuła Excel - 19 różnych bajtów (łącznie 196)
=
,S
,B
,T
,(
,)
,,
,"
,a
,e
,i
,o
,u
,A
,E
,I
,O
,U
,1
* 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.
źródło
Noether, 16 pojedynczych bajtów (łącznie 17)
Wypróbuj online!
Używa wyrażenia regularnego
aby usunąć samogłoski z ciągu wejściowego.
źródło
K (oK) , 16 bajtów, 14 różnych
Rozwiązanie:
Wypróbuj online!
Wyjaśnienie:
Używanie wyjątku (
^
) do odfiltrowania samogłosek.źródło