tło
Jest to pierwsza część 3-dołkowego pola golfowego poświęconego przetwarzaniu tekstu. Ogólny pomysł polega na tym, że jeśli weźmiesz tekst wejściowy i przejrzysz go przez wszystkie trzy wyzwania (z niewielką ilością kodu kleju), wypluje pięknie sformatowany akapit. W tym pierwszym wyzwaniu Twoim zadaniem jest dzielenie tekstu za pomocą podanych wzorców dzielenia wyrazów.
Wejście
Twój program pobierze dwa ciągi znaków: fragment tekstu i listę wzorców dzielenia wyrazów. Pierwsze wejście jest po prostu niepustym ciągiem drukowalnych znaków i spacji ASCII; nie będzie zawierać podziałów ani tyld ~
. Drugie wejście to rozdzielona przecinkami lista słów, które składają się z rozdzielonych tyldą sylab małych znaków ASCII. Przykładem jest ex~cel~lent,pro~gram~ming,abil~i~ties
.
Wynik
Twój program zmodyfikuje pierwsze wejście w następujący sposób. Każde słowo (maksymalny ciąg znaków alfabetycznych ASCII), którego dzielona wersja małych liter znajduje się na drugim wejściu, zostanie zastąpiona tą wersją dzieloną, ale wielkość liter zostanie zachowana. W powyższej przykładowej liście, jeśli tekst zawiera słowo Excellent
, należy je zastąpić Ex~cel~lent
; nie Excellently
należy ich jednak modyfikować. Twój wynik będzie taki zmodyfikowany ciąg.
Szczegółowe zasady i punktacja
Możesz przyjąć następujące założenia dotyczące danych wejściowych:
- Pierwsze wejście nie zawiera tyldy i nie ma spacji wiodących, końcowych ani powtarzających się. Nie jest pusty.
- Drugie wejście zawiera co najmniej jedno słowo, a każde słowo zawiera co najmniej dwie sylaby. Każda sylaba jest niepusta.
- Drugie wejście nie zawiera słowa występującego jako sylaba w innym słowie.
W razie potrzeby możesz zmienić kolejność dwóch danych wejściowych i opcjonalnie dodać jeden końcowy znak nowej linii do wyniku.
Możesz napisać funkcję lub pełny program. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
Są one wymienione w formacie 1st input [newline] 2nd input [newline] output
.
Excellent programming abilities, you work excellently!
ex~cel~lent,pro~gram~ming,abil~i~ties
Ex~cel~lent pro~gram~ming abil~i~ties, you work excellently!
Superman (sometimes incorrectly spelled "Super-man") is super #&%@ing strong.
su~per,some~times,in~cor~rectly,spell~ing
Superman (some~times in~cor~rectly spelled "Su~per-man") is su~per #&%@ing strong.
IncONsISTent caPItalizATIon!
in~con~sis~tent,cap~i~tal~iza~tion
In~cON~sIS~Tent caP~I~tal~izA~TIon!
Such short words.
awk~ward
Such short words.
Digits123 are456cool789.
dig~its,dig~i~tal,are~cool
Dig~its123 are456cool789.
magic magic
ma~gic
ma~gic ma~gic
Ewentualny błąd dzielenia wyrazów w tym wyzwaniu wynika z tego narzędzia dzielenia wyrazów .
#programming!
Drugie wejście będzie nadal miało wpływ na drugie słowo pro~gram~ming
)? Czy liczby też się nie liczą (tzn. Czy dozwolone są tylko znaki alfabetyczne)?