Jeder weiß, dass die Nachrichten langweilig sind. Wirklich langweilig . Es sei denn, es geht um Politiker und ihre Skandale. Das macht Spaß! Aber leider können Politiker nur so viele Skandale begehen. Also beschäftige ich Sie, um die Nachrichten interessanter zu machen.
Ziel Führen Sie bei einem gegebenen HTML-Snippet alle hier gefundenen Ersetzungen aus , d. H. In diesem Bild:
ABER Sie sollten keine HTML-Tags selbst bearbeiten. Ich bezeichne ein gültiges Wort als jedes Wort, das in keinem HTML-Tag oder seinen Attributen gefunden wird. Das heißt, sollten Sie ersetzen nicht <div class="smartphone">iPhone</div>
mit <div class="pokedex">iPhone</div>
, sondern ersetzen <div>election</div>
mit <div>eating contest</div>
.
Parsing-Regeln
- BEARBEITEN Sie sollten nur Wörter suchen, die durch ein Nicht-Wort abgegrenzt sind. Das heißt, Sie sollten nur vollständige Wörter finden. (ZB "Hallo Zeuge", aber nicht "Hellowitness", "Hellow itness" oder "Witnesspacelection".)
- Wenn Sie das Zeichen nicht auf Ihrer Tastatur eingeben können, sollten Sie das nächstgelegene Äquivalent anzeigen. (ZB würde "Smartphone" wirklich "Pokedex" werden)
- Groß- oder Kleinschreibung muss beibehalten werden. (ZB "Angeblich sind sie gestorben" wird zu "Ein bisschen wahrscheinlich, sie sind gestorben", "Sie sind angeblich gestorben" wird zu "Ein bisschen wahrscheinlich gestorben" und "DIE WAHL!" Wird zu "DER ESSWETTBEWERB!", Während "SPACE" wird Aus "Spaaace" und "New Study" wird "Tumblr Post")
- Alle Fälle müssen übereinstimmen. (Dh, Sie müssen ein Wort unabhängig von seiner Groß- und Kleinschreibung suchen.)
- Jeder Fall, in dem
a <vowel>
getroffen wird, solltean <vowel>
und umgekehrt werden . (ZB "Ein Senator" wird "Ein Elfenfürst") Sie müssen dies nicht für jeden Fall tun, sondern zumindest für Ihre eigenen Ersetzungen. - Jeder Plural muss auch die Pluralisierung in der Übersetzung beibehalten (z. B. "Smartphones" wird zu "Pokedex" und "Spaces" wird zu "Spaaaces").
- Alles in einer bestimmten Zeit muss in der Übersetzung in dieser Zeit bleiben. (ZB "Rebuilt" wird "Avenged", "Rebuilds" wird "Avenges", etc.)
- Alles im Singular muss in der Übersetzung singulär bleiben (zB "Kongressführer" wird zu "Flussgeist")
- Wenn sich der Eintrag über mehrere HTML-Elemente erstreckt, sollten Sie ihn trotzdem abgleichen, aber Sie können alle Zwischenelemente "wegwerfen". (ZB
S<b>pa</b>ace
sollte einfach "spaaace" werden). Wenn der Eintrag in einem einzelnen Element enthalten ist, sollte er ordnungsgemäß abgeglichen und das Tag beibehalten werden. - "Die Zeugen" sollten "Die Typen, die ich kenne" werden
- "Zeuge" sollte "Dieser Typ, den ich kenne" werden
- "Der Zeuge" sollte "Der Typ, den ich kenne" werden
- "Konnte nicht für Kommentar erreicht werden" sollte werden "Ist schuldig und jeder weiß es"
- "Kann nicht für Kommentar erreicht werden" sollte werden "Sind schuldig und jeder weiß es"
Boni
Wenn Sie einen -N%
Bonus treffen , ist Ihr new amount = (old amount) * (1 - N/100)
. Wenn Sie also einen -5%
Bonus mit einem 500 - Byte - Code erhalten haben, ist Ihr new amount = 500 * (1 - 5/100) = 500 * .95 = 475
.
- -5% Bonus, wenn für jede Instanz von "space" nach dem ersten Ersetzen ein zusätzliches "a" hinzugefügt wird. Der erste Ersatz wäre also "spaaace", der zweite wäre "spaaaace", der dritte wäre "spaaaace" usw.
- -5% Bonus, wenn Sie diese Nummer für jede gültige Nummer durch einen Link zum jeweiligen XKCD-Comic ersetzen. (Es muss noch nicht existieren). Wenn Sie sich für diesen Bonus gehen Sie, sollten Sie Zahlen übereinstimmen, wie
500
,3,000
,4 523
, und5.324
. (Sie können stattdessen die Zahl durch das Bild des Comics ersetzen. Wenn Sie dies tun, erhalten Sie anstelle eines-5%
Bonus einen-15% bonus
weiteren zusätzlichen-15%
Bonus, wenn Sie den Titeltext zum Bild hinzufügen können, falls vorhanden .) - -25% Bonus, wenn Sie alle Instanzen auf der rechten Seite des Bildes gleichzeitig durch die auf der linken Seite ersetzen können. (ZB "spaaace" wird zu "space", "eating contest" wird zu "choice" usw.) Wenn Sie sich für einen der Boni entscheiden, sollten Sie in der Lage sein, diese auf die jeweiligen Einträge zurückzusetzen. (ZB
http://www.xkcd.com/542
sollte "542" werden und "spaaaaaaace" sollte "space" werden.) - Sie können sich für mindestens 6 Auswechslungen entscheiden, aber für jede nicht durchgeführte Auswechslung (ohne Bonus-Auswechslungen) erhalten Sie eine zusätzliche Strafe von + 10%.
Beispiel IOs (keine Boni)
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
Dies ist ein Code-Golf , also gewinnt das kürzeste Programm in Bytes.
<br/>
)Antworten:
Perl 5 , 850
Viel Regex verwendet oder generiert.
Der% l-Hash wird für wiederholte Wörter verwendet.
Prüfung
quelle
JavaScript ES6, 954 Bytes
Ich dachte, das wird viel einfacher als es ist! Ich habe ursprünglich JavaScript verwendet, damit ich problemlos nur in Textknoten absteigen und den Text dort ersetzen konnte, aber das war nicht das, wonach die Frage lautete, also bin ich zu dieser Monstrosität gekommen! Es besteht alle Testfälle, mit Ausnahme der Fälle, in
<b>g</b><i>oo</i><s>g</s><u>le</u> glass is terrible. :(
denen die gesamte Zeichenfolge in einem<b>
Tag zurückkommt, weil die Tags ausgeglichen werden. Der Großteil des Codes ist die Nachschlagetabelle, und ich vermisse wahrscheinlich noch einige Randfälle, aber ich konnte mir keine schönere Möglichkeit einfallen lassen, um die Zeitform richtig zu handhaben, und ich bin sicher, dass ich das mehr komprimieren könnte, aber ich Ich bin mir sicher, dass ich später darauf zurückkommen werde. Hätte Perl verwenden sollen, bessere Wahl bei LukStorms !Ich habe einen Bonus für 5% des
spaaace
Gewinns eines zusätzlichena
nach jedem erfolgreichen Match angewendet . Verwendetalert()
wie von @sysreq vorgeschlagen , danke!Beispiele
Bonus: Lesezeichen
Führen Sie dies in Ihrer Konsole aus, um den Nachrichtentext direkt zu aktualisieren:
quelle
alert
ist kürzer alsconsole.log
so lange es in einem Browser ausgeführt wird.<b>
Stichwort „Problem“ ist durchaus akzeptabel, wenn nicht mehr akzeptabel. UND ich liebe das letzte Beispiel. Ich habe versucht, an einen zu denken, der die meisten von ihnen beinhaltete. Herzlichen Glückwunsch zur ersten Antwort! Ich bin sicher, es ist wettbewerbsfähig;)