Herausforderung
Hallo, wenn Sie eine Zeichenfolge als Eingabe angegeben haben, entfernen Sie alle am Anfang der Zeichenfolge gefundenen Anreden .
Das Programm, das die korrektesten Ersetzungen in weniger als 50 Bytes durchführt, gewinnt.
Grüße
Hey, eine Anrede wird als eines der folgenden Wörter definiert:
- Hallo
- Hallo
- Hallo
- sehr geehrter
- Schöne Grüße
- hai
- Jungs
- Hallo ich
- Hallo
- Hiya
- Heu
- heya
- Hallo
- Hihi
- Grüße
Der erste Buchstabe kann groß geschrieben werden.
Nach der Anrede wird immer ein Komma und / oder ein einzelnes Leerzeichen stehen, das ebenfalls entfernt werden muss. Das Komma und das Leerzeichen können in beliebiger Reihenfolge ( ,<space>
oder <space>,
) stehen und beide sollten entfernt werden.
Die Begrüßung und das folgende Wort werden immer nur durch ein Komma und / oder ein einzelnes Leerzeichen getrennt.
Sie müssen dann den ersten Buchstaben des Wortes groß schreiben, der der Anrede gefolgt wäre. Auch wenn kein Ersatz stattgefunden hat, sollten Sie das erste Wort der Ausgabe groß schreiben.
Die Großschreibung gilt nur für alphabetische Kleinbuchstaben ( abcdefghijklmnopqrstuvwxyz
). Sie sollten jeden anderen Charakter so lassen, wie er war.
Die Anrede steht immer am Anfang der Zeichenfolge. Sie sollten keine Anrede ersetzen, die nicht am Anfang steht.
Es kann sein, dass es nicht immer eine Anrede gibt.
Ihr Code muss unter 50 Byte liegen.
Beispiele
Input > Output
Salutations, what's going on? > What's going on?
hello i have quetions how does juice an avocado > I have quetions how does juice an avocado
How d'you do > How d'you do
Hey,You! > You!
hola cows eat hay > Cows eat hay
hey Hi there! > Hi there!
hihi ,guys > Guys
Batterie testen
Hola, es gibt insgesamt 1000 verschiedene Eingänge:
Die Testbatterie finden Sie hier, wo jeder Eingang durch eine neue Zeile getrennt ist: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/inputs.txt
Die entsprechenden korrekten Ausgaben finden Sie hier: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/replaced.txt
Ein Bash-Befehl zum Abrufen der beiden oben genannten Befehle lautet
wget https://raw.githubusercontent.com/beta-decay/Remove-Substitutions-Battery/master/{inputs,replaced}.txt
Gewinnen
Grüß dich, das Programm mit den korrektesten Substitutionen aus den 1000 obigen Eingaben gewinnt.
Sie müssen den Prozentsatz der Eingaben, die Ihr Programm korrekt verarbeitet, wie folgt in Ihren Header einfügen:
# Language Name, percentage%
Ich bin mir nicht ganz sicher, warum Jeff das so gemacht hat, aber es ist trotzdem eine schöne Herausforderung.
quelle
s=>System.Text.RegularExpressions.Regex.Replace();
50 Bytes, bevor auch nur ein Muster angegeben wird, das ist dann C # out. (Mit einem Regex-Ansatz natürlich)Antworten:
GNU sed,
78%100%(49 Bytes)
Die Testbatterie ist ziemlich begrenzt: Wir können zählen, welche Wörter in jeder Zeile zuerst erscheinen:
Die Begrüßungen entfernt werden beginnen mit
d
,g
,h
oders
(oder Groß Versionen davon); Die Nichtgrüße, die mit diesen Buchstaben beginnen, sindWenn man Zeilen ignoriert, in denen sie alleine erscheinen, sind das 220 Fehlalarme. Entfernen wir also einfach die Anfangswörter, die mit einem dieser vier Buchstaben beginnen.
Wenn wir ein Anfangswort sehen, das mit einem dieser (
/ ^[dghs]\w*
) beginnt, ohne Berücksichtigung der Groß- und Kleinschreibung (/i
) und gefolgt von mindestens einem Nicht-Wort-Zeichen (\W\+
), ersetzen Sie es durch eine leere Zeichenfolge. Ersetzen Sie dann das erste Zeichen durch das entsprechende Großbuchstaben (s/./\U&/
).Das gibt uns
Wir können dies jetzt ein wenig verfeinern:
Die größte Menge an falsch-positiven Ergebnissen ist
how
, daher machen wir die Substitution durch das Präfixieren eines negativen Tests bedingt:Wir können auch nach dem zweiten Buchstaben filtern, um zu eliminieren
g'd
,speak
undsweet
:Das bleibt nur
good
als falsch positiv. Wir können den Präfix-Test anpassen, um Wörter zu entfernen, die entweder mitw
oder endend
:Demonstration
quelle
Netzhaut ,
68%72,8% (alt)74,8%77,5% (neue Testbatterie)Probieren Sie es online aus! Bearbeiten: Mit Hilfe der Tipps von @ MartinEnder 4,8% (alt) 2,7% (neu) abgedeckt.
quelle
[ ,]+
ein paar Bytes herausdrücken. Sie können das auchh
aus dem Wechsel extrahieren .i`^h(a[iy]|eya?|i(h?i?|ya))[ ,]+
bin mir nicht sicher, könnte aber funktionieren, was bedeutet, dass Sie 8 Bytes übrig habenh?i?
spart nichtsh?i|
und es würde übereinstimmenhih
(obwohl ich nicht weiß, ob das überhaupt in den Testfällen ist).ih?i?|iya
.i`^h(a[iy]|eya?|ih?i|iya|ola|ello)[ ,]+
dannPHP 60,6%
50 Bytes
Probieren Sie es online aus!
PHP 59,4%
49 Bytes
Probieren Sie es online aus!
PHP 58,4%
50 Bytes
Probieren Sie es online aus!
quelle
#^[gh]\w+.#
Vim,
55,4%,44,4%Erläuterung:
quelle