Estoy seguro de que la mayoría de nosotros hemos oído hablar de bombas zip y trucos similares de bombas de descompresión, donde una entrada maliciosamente creada crea una salida masivamente desproporcionada. Incluso tuvimos una pregunta aquí para hacerle eso a un compilador en un punto.
Bueno, se me ocurre que Markdown es una especie de formato de compresión, que reemplaza las etiquetas HTML voluminosas con tokens MD "comprimidos". Por lo tanto, ¿podría ser posible construir una bomba de compresión en Markdown?
Reglas de desafío:
El envío debe ser un texto de descuento, de entre 50 y 256 caracteres de longitud. (Imponiendo un mínimo para evitar algunos comentarios inteligentes que publiquen una respuesta de 3 caracteres o similar).
El envío será procesado por el procesador Markdown de StackExchange tal como se implementa en este sitio.
Su puntaje será la proporción del recuento de caracteres en el HTML resultante al recuento de caracteres de su texto de Markdown.
La puntuación más alta gana.
fuente
Respuestas:
Citas en bloque, 137,469 / 256 = 536.99
6,908 caracteres, 511 líneas nuevas, 130,050 espacios
Markdown seguramente maneja las comillas de bloque anidadas de manera extraña. Cada
>
personaje se convierte en<blockquote></blockquote>
una relación sólida de 1 a 25. ¡Pero espera! ¡Al renderizar el HTML también agrega dos espacios por anidamiento! Tener este intento de renderizar causa problemas a mi navegador, y lo mantendré en la jaula de códigos por ahora. ¡Siéntase libre de desbloquearlo usted mismo!La entrada de código consta de 255
>
seguidos de&
como el último carácter no se transforma, pero se escapa. Gracias BWO!
como el último carácter que le da al último blockquote la clase spoiler con una etiqueta p vacía en su interior. Gracias bta, 11 personajes extraEntrada:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!
HTML de salida:
¡Así es como se ve en la vista del editor!
Trazando los resultados como el número de
>
aumento sugerido por LambdaBeta:fuente
!
antes del ampersand, entonces el último nivel de blockquote obtendrá `class =" spoiler "` agregado. Sin embargo, agréguelo a cualquier otro nivel y acorta la salida.MathJax, 529 252 640 ish / 256 ≈ 2 067 393
Un buen código antiguo de mil risas
$$\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$$
multiplica la ineficiencia grave de representar personajes exóticos en MathJax por un factor considerable.
Se respeta la limitación de configuración de StackExchange MathJax de 10 000 expansiones de macros, mientras que las limitaciones del navegador del cliente, que es muy probable que causen problemas al expandir las macros, no lo son. (Mi navegador tampoco funciona, así que la cifra es una estimación).
fuente
Enlaces abreviados: 68.960 / 256 = 269.375
ASCII solamente: 10,114 / 256 = 39.508
La salida es una secuencia de elementos que se parecen a cada uno:
Después de la sobrecarga fija para crear la referencia de URL, cada enlace de 5 caracteres se expande en la
42+strlen(url)
salida de caracteres. Cree la URL para que tenga la cantidad máxima de caracteres que necesita escapar, y esto aumenta a47+3*strlen(url)
caracteres por enlace. Un poco de experimentación mostró que la salida óptima involucraba 26 enlaces, con 114 carets por enlace.Actualización : si interpreta que el límite de "256 caracteres" incluye caracteres Unicode, puede exprimir más el caos. Reemplazar los cajones con el carácter de bañera Unicode (🛁, punto de código U + 1F6C1) da como
47+18*strlen(url)
resultado caracteres de salida por carácter de entrada para un total de54,57468,960 (gracias a la notación de enlace aún más corta de jimmy23013).Entrada Unicode:
La salida es una serie de:
fuente
[1],[1],[1]...
para los enlaces. 2."
tiene más caracteres que%5E
en la versión no Unicode.15888/50 = 317.76: Abuso de MathJaX
Este es el código:
Esto es lo que parece:
& & & & & & & & &
El HTML resultante es:
No olviden a sus amigos de MathJax.
Advertencia: MathJaX solo muestra el error durante la edición, por lo que debe verlo en el editor. Esta sigue siendo una implementación de descuento en este sitio, por lo que debe ser válida. Una vez publicadas las
Misplaced &
advertencias se convierten en normales 's.fuente
Resaltado de sintaxis,
63766464/256 ≈ 25.25+0.34375 gracias a Ismael Miguel (¡usando una pestaña en lugar de 4 espacios)!
Utiliza la anotación más corta (desafortunadamente, los espacios parecen importar) para obtener resaltado de sintaxis
lang-c
, abre un bloque de código y lo llena&
y0
:Comenzamos con
&
porque se expande&
y usa a0
continuación, alternando estos constantemente crea nuevos<span>
elementos con unclass
atributo. Desafortunadamente, no podemos utilizar solamente&
o&<&<...
desde que se quedan en el mismopun
-<div>
Produce:
Y renderizado por su navegador resulta en:
fuente
<pre class="lang-c prettyprint-override"><code>&0&0& ... 0&0&0& </code></pre>
donde...
es más de lo mismo. Las etiquetas span no están allí en absoluto. Esa es una puntuación de 739/256 = 2.887190/50 = 3.8: cursiva
Como resultado, su preocupación de 3 caracteres es verdadera.
*q*
genera<em>q</em>
dando una relación de 10/3. Dos retornos de carro dan<p>...</p>\n\n
(los dos retornos de carro no son necesarios, pero parecen ser producidos) y una relación resultante de 9/2. Ratio total, 19/5.HTML resultante:
En acción:
q
q
q
q
q
q
q
q
q
q
fuente
> q
para usar en<blockquote>
lugar de<em>
es mejor. (nota: lo haces en cualquier otra línea, de lo contrario es solo una etiqueta)222/53 = <4.2: Escapes desagradables en una inclusión de imagen.
Resultados en:
El HTML resultante debería ser aproximadamente:
Esto abusa de la inclusión de imágenes y de tener que escapar de las cosas.
Solía ser mucho mejor, pero aparentemente la rebaja de SE es lo suficientemente no estándar como para arruinarlo.
Mi presentación anterior (que no era como SE lo hizo) fue:
428/50 = 8.56: Escapes desagradables en una inclusión de imagen.![&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&](&)
El HTML resultante debería ser aproximadamente:
Esto abusa del hecho de que la mayoría de los editores de rebajas reemplazarán los símbolos en el texto alternativo con símbolos en doble escape para que se muestre correctamente. Mientras tanto, se arroja un único ampersand en la sección src para que el analizador realmente lo vea como una imagen.
fuente
[1]:https://&
en una línea y luego usarlo![&][1]
más veces?MathJax: 13,579 / 52 = 261.13
Simplemente crea un montón de MathJax vacío en línea:
Código HTML (puede inspeccionar en el espacio vacío anterior):
fuente
4830/256 = 18.87
Una idea basada en autocorrección HTML. Sin embargo, no es un puntaje bastante alto.
fuente
421/56 = 7.518
Que produce el siguiente HTML en SE:
... y el siguiente resultado:
Y
Y
Y
Y
Y
Y
fuente
11190/255 = ~ 43.88
Me inspiró esta respuesta principal, pero soy demasiado tonto para superarla y alcancé el recuento máximo de caracteres, así que supongo que tendré que estar satisfecho con lo que tengo ¯ \ _ (ツ) _ / ¯. En realidad, hay dos espacios después de la última cita en bloque, pero el formato no lo muestra.
> - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - >
HTML:
fuente