Dies ist ganz einfach: Erstellen Sie das kürzeste Browserskript, um jedes Auftreten von Gewalt auf einer Webseite in Pferd umzuwandeln. Dieses Skript muss in die Konsole eingefügt werden können und auf den meisten modernen Browsern funktionieren.
Sie müssen alle Vorkommen des Wortes Kraft und Konjugate des Wortes Kraft ersetzen (erzwingen, erzwingen, verstärken). Die Fälle müssen auch erhalten bleiben.
Sie dürfen keine Vorkommen ändern, die nicht sichtbar sind, wenn die Seite in einem Browser angezeigt wird. Zum Beispiel Meta-Tags oder Kommentare.
Beispiel
Dies ist ein fOrcE log
. Es macht Menschen, die es berühren, sehr kraftvoll. Versuchen Sie nicht, es zu erzwingen.
Dies ist ein hOrsE log
. Es macht Leute, die es berühren, sehr pferdig. Versuchen Sie nicht, es zu reiten.
Leider ist dies nur eine Javascript-Herausforderung. Der kürzeste Code gewinnt.
quelle
forc
inhors
- oder es ist das Ersetzen aller verschiedenen Konjugationen vonforce
in ihre Pferdeversionen. Im ersteren Fall bekommen wir Dinge wie "Reinhorsing" usw. Im letzteren Fallforcing
wäre nur eine Ausnahme. OP sollte klarstellen..innerHTML
, dass alle Lösungen ersetzt werden. Ich vermute, deshalb möchten Sie die Ausnahmen überhaupt.Antworten:
175 Bytes, ES5, XPATH
Dies wird erfolgreich in den neuesten Versionen von Firefox und Chrome getestet. Kritik ist willkommen! Dies ist mein erster Golfschwung und ich hoffe, ich mache es richtig.
Die
document.evaluate()
Methode wird von allen gängigen Browsern unterstützt, mit Ausnahme des IE , der hoffentlich die Anforderungen für "modernste Browser" erfüllt. Und weil der einzigen wählen XPath - Auswahltextknoten , dies sollte Attribute, Kommentare, Namensräume verlassen, und andere Daten nicht für die Anzeige bestimmt unberührt ohne für jeden Knotens prüfen mussoffsetParent
.Ungolfed Version:
Oder wenn ich durch die
function / return
ECMA6-Fettpfeil-Notation ersetze, kann ich sie auf 163 Zeichen reduzieren.Diese Syntax funktioniert derzeit allerdings nur in Firefox, denke ich. Bis mehr Browser diese Syntax übernehmen, bleibt die obige 175-Byte-Lösung mein offizieller Eintrag für das Spiel.
quelle
offsetParent
alle Tags mitdisplay:none
Stil herausfiltert (die nicht im Browser angezeigt werden).(?=e|ing)
meinen regulären Ausdruck erweitern, wenn OP dies für notwendig hält. In Bezug aufdisplay: none
interpretierte ich "Zum Beispiel Meta-Tags oder Kommentare." Dies bedeutet, dass Dinge, die keine Textknoten sind, in Ruhe gelassen werden sollten, während Textknoten, einschließlich unsichtbarer Knoten, geändert werden sollten. Es würde mich jedoch interessieren, wenn das OP seine Absichten bestätigt.ECMAScript 5,
248233193191182 BytesGetestet in Chrome und Firefox.
Ungolfed Version
Wir sollten nur sichtbare TextNodes ändern. URLs, Attribute usw. werden im Browser nicht angezeigt. Wir können einen TreeWalker verwenden , um alle zu finden. Visible TextNodes wird durch Überprüfung identifiziert werden , falls ihre ParentNode eine truthy hat offset . 1
1 Dies ist in IE 9 fehlerhaft.
quelle
n=[],c=0,
dann eine Schleife durchlaufenn
. Tun Sie einfachif(t.parentNode.offsetParent)t.data=t.data.replace
usw.200 Bytes, ES6
Hier ist eine ES6-Version. Führen Sie es in der neuesten Firefox-Webkonsole aus.
Ich werde die ungolfed Version hinzufügen, wenn gewünscht :)Hier ist die ungolfed Version
quelle
replace('forc','hors')
und das war's. Zeigt, wie viel Javascript ich kenne ...innerHTML
ändert alle Vorkommen in sichtbaren Elementen. Wenn also ein Kommentar darin enthalten ist, wird er ebenfalls berührt. 2. Man könnte argumentieren, dass ES6 in den meisten modernen Browsern nicht wirklich funktioniert .