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 ab
hat drei unterschiedliche Bytes ( a
, b
und 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.
code-challenge
string
Konrad Borowski
quelle
quelle
Renée’s naïveté
? Ohne Vokale sollte das natürlichRn’s nvt
als Ausgabe sein. Diese Ansätze scheinen alle ziemlich naiv zu sein, wenn Sie mich fragen. :)Antworten:
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.
quelle
Brainfuck, 8 verschiedene (2121 insgesamt)
Die unterschiedlichen Zeichen :
<>+-[],.
. Funktioniert mit Dolmetschern, die-1
für verwendenEOF
.quelle
Renée’s naïveté
inRń’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 diesRené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! :)1.166921663690E+1824
Bytes, 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.Leerzeichen, 3 Punkte (218 Zeichen)
Sie wussten, dass es kommen würde.
(_ = Leerzeichen, ⇥ = Tabulator, ↲ = Zeilenumbruch)
Hier ist das in base64 codierte Skript:
Und hier ist das Programm, das in sichtbarer Assembler-ähnlicher Form geschrieben ist:
quelle
LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSSSSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLSTLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL
. Es scheint, dass zwei Probleme (unter anderem) darin bestehen, dass Sie versuchen, eine 0 mitSSSL
statt auf den Stapel zu schiebenSSSSL
, und auch versuchen, ein "leeres" Etikett mitLSSL
for zu definierenskip
.SED (10 verschiedene Bytes, insgesamt 13)
Beispielnutzung:
Ausgänge:
quelle
I
ist Großbuchstaben? Es funktioniert gut, wennI
Zeichen in Kleinbuchstaben geschrieben sind.I
Charakter wiederverwendet wird.ö
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 ,, :-)ö
undï
wurden einmal auf Englisch gefunden, obwohl sie jetzt fast verschwunden sind.C,
222019 verschiedene Zeichen.Buchstaben , die für
main
,putchar
,getchar
= 12.Interpunktion -
(){};
= 5.Operatoren -
&-
= 2.main
ruft undefiniertes Verhalten auf (zu viel--
in einer Zeile).Der Ausdruckswert ist mir egal und er dekrementiert
ii
die 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.
Kann vielleicht weiter verbessert werden, durch Kompilieren mit
gcc -nostartfiles
und Umbenennenmain
zu_start
.min
werden entfernt (nach einer Umbenennung der Variablen),_s
hinzugefügt. Aber dann muss ich verwendenexit()
, was 3 Zeichen hinzufügt.Stattdessen
_start
kann ein beliebiger Name verwendet werden, der unter Linux funktioniert. Dies ermöglicht eine Reduzierung auf 18 Zeichen, ist jedoch sehr unüblich.quelle
Perl: 8 oder 10 verschiedene Zeichen
s///
Lösung: 10 verschiedene, 13 insgesamtDie (angebliche; siehe unten) sed-Technik funktioniert immer auch in Perl und liefert die Namensnummer der verschiedenen Zeichen (10):
Beispielsweise:
Das sind 10 verschiedene Zeichen, wie dies beweist:
Das Problem mit der sed - Lösung ist , dass sein
/i
ist nicht Teil von POSIX sed, und damit ist nicht tragbar:Das läuft auf einem OpenBSD-System. Da im Gegensatz dazu
/i
ist 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:
Und jetzt sind es insgesamt 14 Charaktere.
tr[][]
Lösung: 8 verschiedene 10 insgesamtSie können auch
tr///
alles entfernen, was übereinstimmt. Perl kann sogar deny///
Alias von sed verwenden fürtr
: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:
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:Das sind also immer noch nur die ursprünglichen 8 von insgesamt 11:
EDIT : Bilanzierung von Diakritika
Und was ist mit Eingaben wie
Renée’s naïveté
? Die richtige Ausgabe sollte natürlich seinRn’s nvt
. So geht's mit dem/r
Flag von v5.14s///
:Das sind 27 verschiedene Zeichen:
Sie können , dass auf 26 trimmen , wenn Sie garantieren können , dass Sie mindestens v5.10 laufen durch das Auslagern
print
für einsay
:Und Sie können es auf 22 reduzieren, wenn es Ihnen nichts ausmacht, die Diakritika zu verschieben, anstatt sie zu entfernen:
Welches ist ... interessant anzusehen, um es gelinde auszudrücken. :) Hier ist seine eindeutige Anzahl:
Viel Glück, dass jede andere Sprache mit weniger Zeichen richtig mit Diakritika umgeht!
quelle
"ɢᴏᴏᴅ ᴘ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"
.ø
.Renée’s naïveté
sollte also gebenRné’s nïvté
.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:
12 verschiedene Bytes, insgesamt 13:
quelle
Golfscript (8 verschiedene Bytes, insgesamt 837)
Erläuterung:
[97 101 105 111 117 65 69 73 79 85]
(entsprechend den ASCII-Codes vona,e,i,o,u,A,E,I,O,U
). Jede Zahl wird dargestellt, indem der Wert auf den Stapel gedrückt wird9
, gefolgt von der erforderlichen Anzahl von)
(Inkrementoperatoren). Zum Beispiel wird die Zahl67
unter Verwendung von9
und 58)
s erhalten''+
wird das Array in eine Zeichenfolge konvertiert"a,e,i,o,u,A,E,I,O,U"
, die alle Vokale darstelltDie 8 einzigartige Charaktere , die verwendet wurden:
[
,]
,9
,)
,+
,-
,'
und(space)
quelle
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.
quelle
VBA -
2522 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
*
,,,1
ermöglicht das Ignorieren von Groß- und Kleinschreibung. (1
repräsentiert die KonstantevbTextCompare
)quelle
E
inEnd Sub
. Aber ganz nett, wenn man bedenkt, dass es Basic ist.E
, und ich habe korrigiert. Ich glaube, ich war zu besorgt um das Fleisch des U-Bootes. ;-)e
oderE
?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,)"uOI
und 111 Bytes insgesamtPython 3.x, 19 verschiedene Zeichen, insgesamt 62
quelle
Renée’s naïveté
.J, 21 Zeichen (18 verschiedene)
quelle
K, 29. (18 verschiedene Bytes)
verschiedene Bytes: {@ & ~ (: 0) in _, "AEIOU}
quelle
ASM - 6 verschiedene Zeichen 520 Quellzeichen (MsDOS .com)
Zusammengebaut mit A86
quelle
MATL, 8 Bytes (alle verschieden)
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.
13Y2
ist ein wörtliches EnthaltenaeiouAEIOU
.Nehmen Sie ein Duplikat
t
der Eingabezeichenfolge, erstellen Sie ein logisches (boolesches) Array, das angibt, welche Buchstaben der Eingabe keine (~
)m
Glut dieses Literals sind, und index ()
) an diesen Stellen, um ein Array mit nur Nicht-Vokalzeichen zurückzugeben.quelle
PHP - 30 verschiedene Bytes
quelle
/[aeiou|AEIOU]/
in/[aeiou]/i
? Außerdem|
verschwindet Ihr Code .Bash 26 verschiedene, 37 insgesamt
sortiert:
Ergebnis (bewahrt Linefeeds):
Für tr ist nicht klar, wie man zählt: '-d aeiouAEIOU' als 10 oder 13:
quelle
tr -d aeiouAEIOU
für 15 gezählt wird.Python (23)
Jemand musste es tun.
quelle
F #
105 12191 Zeichenquelle
Excel-Formel - 19 verschiedene Bytes (insgesamt 196)
=
,S
,B
,T
,(
,)
,,
,"
,a
,e
,i
,o
,u
,A
,E
,I
,O
,U
,1
* 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.
quelle
Noether, 16 einzelne Bytes (insgesamt 17)
Probieren Sie es online aus!
Verwendet den regulären Ausdruck
um die Vokale aus der Eingabezeichenfolge zu entfernen.
quelle
K (oK) , 16 Bytes, 14 verschiedene
Lösung:
Probieren Sie es online aus!
Erläuterung:
Verwenden Sie Except (
^
), um die Vokale herauszufiltern.quelle