Wszyscy wiedzą, że wiadomość jest nudna. Naprawdę nudno . Chyba że chodzi o polityków i ich skandale. To jest zabawa! Ale niestety politycy mogą popełnić tylko tyle skandali. Zatrudniam cię, aby wiadomości były ciekawsze.
Cel Biorąc pod uwagę fragment kodu HTML, wykonaj wszystkie podstawienia znalezione tutaj , to znaczy na tym obrazku:
ALE nie powinieneś samodzielnie edytować żadnych tagów HTML. Prawidłowe słowo nazywam dowolnym słowem, które nie znajduje się w tagu HTML ani w jego atrybutach. Oznacza to, że nie powinno zastąpić <div class="smartphone">iPhone</div>
się <div class="pokedex">iPhone</div>
, ale należy wymienić <div>election</div>
z <div>eating contest</div>
.
Zasady analizowania
- EDYCJA Powinieneś dopasowywać tylko słowa wyznaczone przez nie-słowo. Oznacza to, że powinieneś dopasowywać tylko pełne słowa. (Np. Dopasuj „Witaj świadku”, ale nie „Hellowitness”, „Hellow itness” lub „Witnesspacelection”.
- Jeśli nie możesz wpisać znaku na klawiaturze, powinieneś wyświetlić najbliższy odpowiednik. (Np. „Smartfon” naprawdę stałby się „Pokedex”)
- Skrzynia z pierwszą literą lub cała litera musi zostać zachowana. (Np. „Rzekomo umarli” zamienia się w „prawdopodobnie pewnie umarli”, „rzekomo umarli” staje się „pewnie umarli”, a „WYBÓR!” Staje się „KONKURSEM JEDZENIA!”, Podczas gdy „SPAcE” staje się „Spaaace” i „NEW STUDY” zmieniają się w „post tumblr”)
- Wszystkie przypadki muszą być dopasowane. (Tj. Musisz dopasować słowo, niezależnie od jego wielkiej litery).
- Każdy przypadek, w którym
a <vowel>
zostanie spełniony, powinien stać sięan <vowel>
i odwrotnie . (Np. „Senator” staje się „Władcą elfów”) Nie musisz tego robić za każdym razem, ale przynajmniej dla własnych zastępców. - Wszystko w liczbie mnogiej musi również zachować liczbę mnogą w tłumaczeniu (np. „Smartfony” stają się „pokedex”, a „Spaces” stają się „Spaaaces”)
- Wszystko w określonym czasie musi pozostać w tym czasie w tłumaczeniu. (Np. „Rebuilt” staje się „Avenged”, „Rebuilds” zmienia się w „Avenges” itp.)
- Wszystko w liczbie pojedynczej musi pozostać liczbą pojedynczą w tłumaczeniu (np. „Lider kongresu” staje się „duchem rzeki”)
- Jeśli pozycja obejmuje wiele elementów HTML, powinieneś ją dopasować, ale możesz „wyrzucić” dowolne elementy pośrednie. (Np.
S<b>pa</b>ace
Powinien stać się po prostu „spaaace”). Jeśli wpis jest samowystarczalny w ramach jednego elementu, należy go odpowiednio dopasować, a tag zachować. - „Świadkowie” powinni zostać „Ci kolesie, których znam”
- „świadek” powinien stać się „Ten koleś, którego znam”
- „Świadek” powinien stać się „Ten koleś, którego znam”
- „Nie można dotrzeć do komentarza” powinno stać się „Jest winny i wszyscy o tym wiedzą”
- „Nie można się o komentarz skomentować” powinno stać się „Jesteś winny i wszyscy o tym wiedzą”
Bonusy
Jeśli spotkasz -N%
bonus, twój new amount = (old amount) * (1 - N/100)
. Tak więc, jeśli spotkałeś -5%
bonus z kodem 500 bajtów, twój new amount = 500 * (1 - 5/100) = 500 * .95 = 475
.
- -5% premii, jeśli za każde wystąpienie „spacji” po pierwszej zamianie dodaje się dodatkowe „a”. Tak więc pierwszym zamiennikiem byłoby „spaaaace”, drugim - „spaaaace”, trzecim - „spaaaaace” itp.
- -5% premii, jeśli za każdy ważny numer zamienisz ten numer na link do odpowiedniego komiksu XKCD. (Nie musi jeszcze istnieć). Jeśli pójdziesz do tej premii, należy dopasować numery takie jak
500
,3,000
,4 523
, i5.324
. (Możesz zamiast tego zastąpić numer obrazem komiksu. Jeśli to zrobisz, zamiast-5%
premii, otrzymasz a-15% bonus
. Kolejną dodatkową-15%
premię, jeśli możesz dodać tekst tytułowy do obrazu, jeśli w ogóle .) - -25% premii, jeśli możesz zastąpić jednocześnie wszystkie instancje po prawej stronie obrazu instancjami po lewej. (Np. „Spaaace” staje się „przestrzenią”, „konkurs jedzenia” staje się „wyborami” itp.) Jeśli zdecydujesz się na którykolwiek z bonusów, powinieneś być w stanie przywrócić je do odpowiednich wpisów. (Np.
http://www.xkcd.com/542
Powinien stać się „542”, a „spaaaaaaaace” powinien stać się „przestrzenią”.) - Możesz zdecydować się na minimum 6 zmian, ale za każdą niewykonaną zamianę (oprócz zamiany premii) otrzymasz dodatkową karę + 10%.
Przykładowe IO (bez bonusów)
Input: Witnesses allegedly used their smartphones to commit the crime.
Output: These dudes I know kinda probably used their pokedex to commit the crime.
Input: Mayor Golfalot rebuilt the city after the fatal election.
Output: Mayor Golfalot avenged the city after the fatal eating contest.
Input: This <b>new study</b> shows that people in <span class="space">space</span> cannot be reached for comment.
Output: This <b>tumblr post</b> shows that people in <span class="space">spaaace</span> are guilty and everyone knows it.
Input: <b>g</b><i>oo</i><s>g</s><u>le</u> glass is terrible. :(
Output: virtual boy is terrible. :(
Input: Electric SMARTPHONES have been shown to be more productive when not used by Senators and when not used in cars.
Output: Atomic POKEDEX have been shown to be more productive when not used by Elf-lords and when not used in cats.
Input: Homeland Security has been established as an evil foundation, especially in space.
Output: Homestar runner has been established as an evil foundation, especially in spaaace.
Input: The congressional leaders are testy today.
Output: The river spirits are testy today.
Input: SPACE is not a Senator or a cAR.
Output: SPAAACE is not an Elf-lord or a cat.
Input: Mr. Biz is running for reelection.
Output: Mr. Biz is running for reelection.
Input: Google glass !
Output: Virtual boy !
Input: New (or old) study
Output: New (or old) study
To jest golf golfowy , więc wygrywa najkrótszy program w bajtach.
<br/>
)Odpowiedzi:
Perl 5 , 850
Wiele wyrażeń regularnych używanych lub generowanych.
Skrót% l jest używany do powtarzania słów.
Test
źródło
JavaScript ES6, 954 bajty
Myślałem, że będzie to o wiele łatwiejsze niż było! Początkowo używałem JavaScript, więc mogłem łatwo zejść tylko do węzłów tekstowych i zamienić tam tekst, ale nie o to chodziło, więc skończyłem z tą potwornością! Pomija wszystkie przypadki testowe, z wyjątkiem sytuacji,
<b>g</b><i>oo</i><s>g</s><u>le</u> glass is terrible. :(
gdy cały ciąg znaków wraca do<b>
znacznika z powodu zrównoważenia znaczników. Większość kodu to tabela odnośników i prawdopodobnie wciąż brakuje mi niektórych przypadków krawędzi, ale nie mogłem wymyślić lepszego sposobu na poprawne zarządzanie czasem i jestem pewien, że mógłbym to bardziej skompresować, ale Skończyły mi się pomysły ... Jestem pewien, że wrócę do tego później. Powinienem był użyć Perla, lepszy wybór @LukStorms !Zastosowałem jeden bonus za 5%
spaaace
otrzymania dodatkowegoa
po każdym udanym meczu. Używaalert()
zgodnie z sugestią @sysreq , dzięki!Przykłady
Bonus: bookmarklet
Uruchom to w konsoli, aby zaktualizować tekst w miejscu:
źródło
alert
jest krótszy niżconsole.log
pod warunkiem, że działa w przeglądarce.<b>
Tag „problem” jest całkowicie dopuszczalne, jeśli nie bardziej akceptowalne. I uwielbiam ostatni przykład. Próbowałem wymyślić taki, który zawiera większość z nich. Gratulujemy pierwszej odpowiedzi! Jestem pewien, że jest konkurencyjny;)