Ich bin sicher, die meisten von uns haben von Reißverschlussbomben und ähnlichen Dekompressionsbomben-Tricks gehört, bei denen eine in böswilliger Absicht erstellte Eingabe eine überproportionale Ausgabe erzeugt. Wir hatten hier sogar eine Frage , die wir an einem bestimmten Punkt an einen Compiler richten sollten.
Nun, mir fällt ein, dass Markdown eine Art Komprimierungsformat ist, bei dem sperrige HTML-Tags durch "komprimierte" MD-Token ersetzt werden. Könnte es daher möglich sein, in Markdown eine Kompressionsbombe zu bauen?
Herausforderungsregeln:
Die Einreichung sollte ein Textabschnitt mit einer Länge zwischen 50 und 256 Zeichen sein. (Das Auferlegen eines Minimums, um einen Smart-Aleck abzuwehren, der eine 3-stellige Antwort oder ähnliches veröffentlicht.)
Die Übermittlung wird vom Markdown-Prozessor von StackExchange verarbeitet, wie auf dieser Site implementiert.
Ihre Punktzahl ist das Verhältnis der Zeichenanzahl im resultierenden HTML zur Zeichenanzahl Ihres Markdown-Textes.
Höchste Punktzahl gewinnt.
quelle
Antworten:
Blockquotes, 137.469 / 256 = 536,99
6.908 Zeichen, 511 neue Zeilen, 130.050 Leerzeichen
Markdown behandelt verschachtelte Block-Anführungszeichen auf merkwürdige Weise. Jeder
>
Charakter wird zu<blockquote></blockquote>
einem soliden Verhältnis von 1 zu 25. Aber warte! Beim Rendern des HTML werden außerdem zwei Leerzeichen pro Verschachtelung hinzugefügt! Der Versuch, den Code zu rendern, bereitet meinem Browser einige Sorgen, und ich werde ihn vorerst im Code-Käfig behalten. Fühlen Sie sich frei, es selbst zu entsperren!Die Codeeingabe besteht aus 255
>
gefolgt von,&
da das letzte Zeichen nicht transformiert wird, es jedoch maskiert wird. Danke BWO!
als letztes Zeichen, das dem letzten Blockquote die Spoiler-Klasse mit einem leeren p-Tag gibt. Danke bta, 11 zusätzliche ZeichenEingang:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!
HTML ausgeben:
So sieht es in der Editoransicht aus!
Zeichnen Sie die Ergebnisse als die Anzahl der
>
Erhöhungen, wie von LambdaBeta vorgeschlagen:quelle
!
vor dem kaufmännischen Und hinzufügen , wird der letzten Ebene von blockquote class = "spoiler" hinzugefügt. Wenn Sie es zu einer anderen Ebene hinzufügen , verkürzt sich die Ausgabe.MathJax, 529 252 640 ish / 256 ≈ 2 067 393
Ein guter alter Tausend-Lacher-Code
$$\def\a{🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣}\def\b{\a\a\a\a\a\a\a\a\a\a\a\a\a}\def\c{\b\b\b\b\b\b\b\b\b\b\b}\def\d{\c\c\c\c\c\c\c\c}\d\d\d\d\d\d\d\d$$
multipliziert die grobe Ineffizienz der Darstellung exotischer Zeichen in MathJax mit einem erheblichen Faktor.
Die Beschränkung der StackExchange MathJax-Konfiguration auf 10 000 Makro-Erweiterungen werden berücksichtigt, während die Einschränkungen des Client-Browsers, die höchstwahrscheinlich Probleme beim Erweitern der Makros verursachen, nicht berücksichtigt werden. (Mein Browser ist ebenfalls nicht kooperativ, daher handelt es sich bei der Zahl um eine Schätzung.)
quelle
Shorthand-Links: 68.960 / 256 = 269.375
Nur ASCII: 10,114 / 256 = 39,508
Die Ausgabe ist eine Folge von Elementen, die wie folgt aussehen:
Nach dem festgelegten Aufwand für das Erstellen der URL-Referenz wird jeder 5-stellige Link zu einer
42+strlen(url)
Zeichenausgabe erweitert . Stellen Sie die URL so ein, dass sie die maximale Anzahl von Zeichen enthält, die maskiert werden müssen. Dies erhöht sich auf47+3*strlen(url)
Zeichen pro Link. Ein kleines Experiment zeigte, dass die optimale Ausgabe 26 Verbindungen mit 114 Carets pro Verbindung umfasste.Update : Wenn Sie das Limit von "256 Zeichen" so interpretieren, dass es Unicode-Zeichen enthält, können Sie mehr Chaos beseitigen. Das Ersetzen der Einfügemarken durch das Unicode-Badewannenzeichen (🛁, Codepunkt U + 1F6C1) führt zu
47+18*strlen(url)
Ausgabezeichen pro Eingabezeichen für insgesamt54.57468.960 (dank der noch kürzeren Verknüpfungsnotation vonjimmy23013).Unicode-Eingabe:
Ausgabe ist eine Reihe von:
quelle
[1],[1],[1]...
für die Links verwenden. 2."
hat mehr Zeichen als%5E
in der Nicht-Unicode-Version.15888/50 = 317,76: Missbrauch von MathJaX
Dies ist der Code:
So sieht es aus:
Das resultierende HTML ist:
Vergessen Sie nicht Ihre MathJax-Leute.
Vorsichtsmaßnahme: Das MathJaX zeigt den Fehler nur während der Bearbeitung an, sodass Sie ihn im Editor anzeigen müssen. Dies ist immer noch eine Abschriftenimplementierung auf dieser Site, sollte also gültig sein. Sobald die
Misplaced &
Warnungen gepostet sind, werden sie zu normalen &.quelle
Syntaxhervorhebung,
63766464/256 ≈ 25.25+0.34375 danke an Ismael Miguel (mit einem Tab anstelle von 4 Leerzeichen)!
Dies verwendet die kürzeste Annotation (leider scheinen Leerzeichen eine Rolle zu spielen), um Syntax-Hervorhebungen zu erhalten
lang-c
, öffnet einen Codeblock und füllt ihn mit&
und0
:Wir beginnen damit,
&
dass es erweitert&
und als0
nächstes verwendet wird. Wenn Sie diese<span>
Elemente abwechseln, werden ständig neue Elemente mit einemclass
Attribut erstellt. Leider können wir nicht nur verwenden&
oder&<&<...
da sie in der gleichen bleibenpun
-<div>
Es produziert:
Und von Ihrem Browser gerendert ergibt sich:
quelle
<pre class="lang-c prettyprint-override"><code>&0&0& ... 0&0&0& </code></pre>
wo...
mehr davon vorhanden ist. Die span-Tags sind überhaupt nicht vorhanden. Das ist eine Punktzahl von 739/256 = 2.887190/50 = 3,8: Kursiv
Wie sich herausstellt, ist Ihre 3-Zeichen-Sorge wahr.
*q*
erzeugt<em>q</em>
ein Verhältnis von 10/3. Zwei Wagenrückläufe ergeben<p>...</p>\n\n
(die beiden Wagenrückläufe sind nicht erforderlich, scheinen aber produziert zu sein) und ein resultierendes Verhältnis von 9/2. Gesamtverhältnis, 19/5.Resultierendes HTML:
In Aktion:
q
q
q
q
q
q
q
q
q
q
quelle
> q
verwenden ,<blockquote>
anstatt<em>
besser. (Hinweis: Sie tun es für jede andere Zeile, ansonsten ist es nur ein Tag)222/53 = <4.2: Böse Flucht in eine Bildaufnahme.
Ergebnisse in:
Resultierendes HTML sollte ungefähr sein:
Dies missbraucht die Inklusion von Bildern und muss den Dingen entkommen.
Früher war es viel besser, aber anscheinend ist der Abschlag von SE nicht normal genug, um es zu ruinieren.
Mein vorheriger Beitrag (der nicht so war, wie SE ihn gerendert hat) war:
428/50 = 8,56: Böse Flucht in eine Bildaufnahme.![&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&](&)
Resultierendes HTML sollte ungefähr sein:
Dies missbraucht die Tatsache, dass die meisten Markdown-Editoren das Et-Zeichen im Alternativtext durch doppelt maskiertes Et-Zeichen ersetzen, damit es korrekt angezeigt wird. Währenddessen wird ein einzelnes kaufmännisches Und in den Abschnitt src geworfen, damit der Parser es tatsächlich als Bild sieht.
quelle
[1]:https://&
einer Zeile komprimieren und dann![&][1]
mehrmals verwenden?MathJax: 13.579 / 52 = 261,13
Erstellt einfach eine Reihe leerer Inline-MathJax:
HTML-Code (kann auf dem leeren Raum oben inspizieren):
quelle
4830/256 = 18,87
Eine Idee, die auf HTML-Autokorrektur basiert. Nicht ganz hohe Punktzahl.
quelle
421/56 = 7,518
Welches erzeugt die folgenden HTML auf SE:
... und folgende Ausgabe:
&
&
&
&
&
&
quelle
11190/255 = ~ 43,88
Diese Top-Antwort hat mich inspiriert , aber ich bin zu dumm, um sie zu schlagen, und habe die maximale Anzahl an Zeichen erreicht. Ich denke, ich muss mich mit dem zufrieden geben, was ich habe. \ _ (ツ) _ / ¯. Es gibt tatsächlich zwei Leerzeichen nach dem letzten Blockzitat, aber die Formatierung zeigt es nicht an.
> - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - >
HTML:
quelle