Wyzwanie
Cześć, biorąc pod uwagę ciąg jako dane wejściowe, usuń wszelkie pozdrowienia znalezione na początku ciągu.
Wygrywa program, który wykonuje najbardziej poprawne podstawienia w mniej niż 50 bajtach.
Pozdrowienia
Hej, pozdrowienie jest zdefiniowane jako jedno z następujących słów:
- cześć
- Hej
- dzień dobry
- drogi
- Pozdrowienia
- hai
- chłopaki
- hii
- cześć
- cześć
- siano
- heya
- hola
- cześć cześć
- pozdrowienia
Pierwsza litera może być pisana wielkimi literami.
Po powitaniu zawsze będzie przecinek i / lub jedna spacja, którą również należy usunąć. Przecinek i spacja mogą być w dowolnej kolejności ( ,<space>
lub <space>,
) i oba należy usunąć.
Powitanie i następujące słowo będą zawsze oddzielone przecinkiem i / lub pojedynczą spacją.
Następnie musisz wpisać wielką literę pierwszej litery słowa, która byłaby zgodna z pozdrowieniem. Nawet jeśli nie nastąpiła zamiana, powinieneś zapisać wielkie słowo w pierwszym słowie.
Wielkie litery dotyczą tylko małych liter ( abcdefghijklmnopqrstuvwxyz
). Powinieneś zostawić każdą inną postać taką, jaka była.
Powitanie zawsze będzie na początku łańcucha. Nie powinieneś zastępować pozdrowienia, którego nie ma na początku.
Nie zawsze może być pozdrowienie.
Twój kod musi mieć mniej niż 50 bajtów.
Przykłady
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
Sprawdź akumulator
Hola, w sumie jest 1000 różnych danych wejściowych:
Baterię testową można znaleźć tutaj, gdzie każde wejście jest oddzielone nową linią: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/inputs.txt
Odpowiednie prawidłowe dane wyjściowe znajdują się tutaj: https://github.com/beta-decay/Remove-Substitutions-Battery/blob/master/replaced.txt
Polecenie Bash do odzyskania obu powyższych jest
wget https://raw.githubusercontent.com/beta-decay/Remove-Substitutions-Battery/master/{inputs,replaced}.txt
Zwycięski
Howdy, program z najbardziej poprawnymi podstawieniami z 1000 wejść powyżej wygrywa.
Musisz umieścić procent nagłówka danych, które program poprawnie obsługuje w nagłówku, tak jak poniżej:
# Language Name, percentage%
Nie jestem do końca pewien, dlaczego Jeff to stworzył, ale mimo to stanowi spore wyzwanie.
źródło
s=>System.Text.RegularExpressions.Regex.Replace();
50 bajtów przed określeniem nawet wzorca, to C # out. (Oczywiście z wyrażeniem regularnym)Odpowiedzi:
GNU sed,
78%100%(49 bajtów)
Bateria testowa jest dość ograniczona: możemy policzyć, które słowa pojawiają się w pierwszej linii:
Wezwań do usunięcia rozpoczyna się
d
,g
,h
lubs
(i duże ich wersji); pozdrowienia zaczynające się od tych liter sąIgnorowanie linii tam, gdzie pojawiają się one same, to 220 fałszywych trafień. Usuńmy więc początkowe słowa zaczynające się na dowolną z tych czterech liter.
Kiedy widzimy początkowe słowo zaczynające się na dowolne z tych (
/ ^[dghs]\w*
), bez rozróżniania wielkości liter (/i
), po którym następuje co najmniej jeden znak inny niż słowo (\W\+
), a następnie zastępujemy go pustym ciągiem. Następnie zamień pierwszy znak na ekwiwalent wielkich liter (s/./\U&/
).To nam daje
Możemy teraz trochę to udoskonalić:
Największy zestaw wyników fałszywie dodatnich jest
how
taki, więc uzależniamy podstawienie przedrostkiem testem ujemnym:Możemy również filtrować na drugą literę, aby wyeliminować
g'd
,speak
isweet
:To pozostawia tylko
good
jako fałszywie pozytywny. Możemy dostosować test prefiksu wyeliminować słowa kończące się albow
albod
:Demonstracja
źródło
Siatkówka ,
68%72,8% (stare)74,8%77,5% (nowa bateria testowa)Wypróbuj online! Edycja: Zyskaliśmy 4,8% (stary) 2,7% (nowy) zasięg dzięki pomocy @ MartinEnder.
źródło
[ ,]+
aby wycisnąć jeszcze kilka bajtów. Możesz również wyodrębnićh
z alternacji.i`^h(a[iy]|eya?|i(h?i?|ya))[ ,]+
może działać, co oznacza, że masz 8 bajtów do straceniah?i?
niczego nie zapisujeh?i|
i pasowałobyhih
(chociaż nie wiem, czy to nawet w przypadkach testowych).ih?i?|iya
.i`^h(a[iy]|eya?|ih?i|iya|ola|ello)[ ,]+
wtedyPHP, 60,6%
50 bajtów
Wypróbuj online!
PHP, 59,4%
49 bajtów
Wypróbuj online!
PHP, 58,4%
50 bajtów
Wypróbuj online!
źródło
#^[gh]\w+.#
Vim,
55,4%44,4%Wyjaśnienie:
źródło