Wprowadzenie
Wszyscy - zwłaszcza maniacy wśród nas, którzy są fanami - wszyscy pamiętamy tę starą kreskówkę z Far Side :
Najwyraźniej profesor Schwartzman mógł odrobinę poprawić swoje umiejętności programistyczne, zanim zastosuje swój wynalazek. Ale czy możesz to samodzielnie odtworzyć ... używając jak najmniej bajtów?
Dane wejściowe
Musisz stworzyć skrypt, który tłumaczy odgłosy psa na odpowiednio intonowane „Hej”. To jest czysty golf; najniższa liczba bajtów wygrywa.
Twój wkład będzie składał się z kombinacji następujących tokenów:
Bark
,Baark
,Baaark
,Baaaark
, ... (to znaczyB*rk
co najmniej 1a
zastępując gwiazdka)Woof
,Wooof
,Woooof
... (W*f
z co najmniej 2o
a zastąpienie gwiazdka)Grr
,Grrr
,Grrrr
, ..., (G
po co najmniej 2r
S)- Dowolna liczba
.
(kropka),!
(wykrzyknik) i / lub?
(znak zapytania), które mogą wystąpić w dowolnym miejscu na wejściu
Zauważ ponownie, że tokeny Woof
oparte i Grr
oparte zawsze zawsze wymagają co najmniej dwóch o
si r
; Wof
i nieGr
są prawidłowymi tokenami.
Nie ma ograniczenia co do długości tokenów (np. Ile powtórzeń a
może znajdować się w Bark
tokenie); Jednak twój dekoder musi pracować poprawnie tylko dla żetonów wejściowych o wysokości do 10 sumy a
s, o
S lub r
S, aby przejść to wyzwanie.
Dane wyjściowe
Wierny projektowi Schwartzmana, twój program dekodera dla psów musi przetworzyć go na tekst wyjściowy w następujący sposób:
Bark
,Woof
IGrr
staćHey
;Baark
,Wooof
IGrrr
staćHeyy
;Baaark
,Woooof
IGrrrr
staćHeyyy
; itp.- W przypadku wszystkich
Bark
tokenów liczbay
s wHey
tokenie opartym na danych wyjściowych musi być równa liczbiea
s; - W przypadku wszystkich
Woof
tokenów liczbay
s naHey
tokenie opartym na danych wyjściowych musi być o jeden mniejsza niż liczbao
s; - W przypadku wszystkich
Grr
tokenów liczbay
s naHey
tokenie opartym na danych wyjściowych musi być o jeden mniejsza niż liczbar
s; - Cała interpunkcja (
.
,!
i?
) pozostaje niezmieniona.
Pamiętaj, aby usunąć jeden y
z danych wyjściowych tylko dla Woof
s i Grr
s! Wejście Baaaaaaaark?
z 8 a
s stanie się Heyyyyyyyy?
z pasującym zestawem 8 y
s. Jednak Woooooooof?
staje się tylko Heyyyyyyy?
, z 7 y
s.
Ponownie, jeśli możesz sprawić, aby Twój program działał dla tokenów wejściowych o nieograniczonym rozmiarze, to świetnie, ale na potrzeby tego wyzwania Twój program zostanie sprawdzony tylko pod kątem prawidłowego działania tokenów wejściowych, które nie zawierają więcej niż 10 powtarzających się liter .
Zakłada się, że wszystkie Bark
-, Woof
- i Grr
oparte na tokenach w danych wejściowych zaczynają się od wielkich liter. Dlatego nie ma potrzeby radzenia sobie ze zmienianiem się Bark grrr
w Hey heyy
coś podobnego.
Przykładowe wejścia i wyjścia
- Wkład:
Bark. Bark! Bark!!
- Wydajność:
Hey. Hey! Hey!!
- Wkład:
- Dane wejściowe:
Baaaaaark?
(sześća
s) - Wyjście:
Heyyyyyy?
(sześćy
s)
- Dane wejściowe:
- Dane wejściowe:
Grrrrrrrr...
(osiemr
s) - Wyjście:
Heyyyyyyy...
( siedemy
s)
- Dane wejściowe:
- Wkład:
?...!
- Wydajność:
?...!
- Wkład:
- Wkład:
Wooof Woof? Grrrr. Baaaark Grr!
- Wydajność:
Heyy Hey? Heyyy. Heyyyy Hey!
- Wkład: