Tenho certeza de que a maioria de nós já ouviu falar de bombas zip e truques semelhantes de bombas de descompressão, nas quais uma entrada criada com códigos maliciosos cria uma saída massivamente desproporcional. Até tivemos uma pergunta aqui para fazer isso com um compilador em um ponto.
Bem, me ocorre que o Markdown é um tipo de formato de compactação, substituindo tags HTML volumosas por tokens MD "compactados". Portanto, seria possível construir uma bomba de compressão no Markdown?
Regras do desafio:
O envio deve ser um texto de remarcação, com 50 a 256 caracteres. (Impondo um mínimo para impedir que um espertinho publique uma resposta de 3 caracteres ou similar.)
O envio será processado pelo processador Markdown do StackExchange, conforme implementado neste site.
Sua pontuação será a proporção da contagem de caracteres no HTML resultante para a contagem de caracteres do seu texto Markdown.
Maior pontuação ganha.
fonte
Respostas:
Citações em bloco, 137.469 / 256 = 536,99
6.908 caracteres, 511 novas linhas, 130.050 espaços
O Markdown certamente lida com aspas em bloco aninhadas. Cada
>
personagem é transformado em<blockquote></blockquote>
uma proporção sólida de 1 a 25. Mas espere! Ao renderizar o HTML, ele também adiciona dois espaços por aninhamento! Tendo essa tentativa de renderização, meu navegador fica com um pouco de tristeza, e vou mantê-lo na gaiola de código por enquanto. Sinta-se livre para desbloquear você mesmo!A entrada de código consiste em 255,
>
seguida de&
como o último caractere não se transforma, mas é escapado. Obrigado BWO!
como o último caractere que fornece ao último bloco de citação a classe de spoilers com uma tag p vazia dentro. Obrigado bta, 11 caracteres extrasEntrada:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!
HTML de saída:
Aqui está o que parece na visualização do editor!
Traçando os resultados como o número de
>
aumento, conforme sugerido pelo LambdaBeta:fonte
!
antes do e comercial, o último nível de blockquote receberá `class =" spoiler "` adicionado a ele. Adicione-o a qualquer outro nível e diminua a saída.MathJax, 529 252 640 ish / 256 ≈ 2 067 393
Um bom código antigo de milhares de risadas
$$\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 a grande ineficiência de representar caracteres exóticos no MathJax por um fator considerável.
A limitação de configuração do StackExchange MathJax de 10 000 expansões de macro estão sendo respeitadas, enquanto as limitações do navegador do cliente, que provavelmente causam problemas na expansão das macros, não são. (Meu navegador também não coopera, portanto, o número é uma estimativa.)
fonte
Links abreviados: 68,960 / 256 = 269,375
Apenas ASCII: 10.114 / 256 = 39.508
Saída é uma sequência de elementos com os quais cada um se parece:
Após a sobrecarga fixa para criar a referência de URL, cada link de 5 caracteres se expande na
42+strlen(url)
saída de caracteres. Crie o URL para ter o número máximo de caracteres que precisam ser escapados, e isso aumenta para47+3*strlen(url)
caracteres por link. Um pouco de experimentação mostrou que a saída ideal envolvia 26 links, com 114 circunflexos por link.Atualização : se você interpretar o limite de "256 caracteres" para incluir caracteres Unicode, poderá espremer mais caos. Substituir os circunflexos pelo caractere de banheira Unicode (🛁, codepoint U + 1F6C1) resulta em
47+18*strlen(url)
caracteres de saída por caractere de entrada para um total de54.57468.960 (graças à notação de link ainda mais curta de jimmy23013).Entrada Unicode:
Saída é uma série de:
fonte
[1],[1],[1]...
para os links. 2."
possui mais caracteres do que%5E
na versão não-Unicode.15888/50 = 317.76: Abuso de MathJaX
Este é o código:
Isto é o que parece:
& & & & & & & & &
O HTML resultante é:
Não se esqueça do pessoal da MathJax.
Advertência: O MathJaX mostra apenas o erro durante a edição, portanto você deve visualizá-lo no editor. Ainda é uma implementação de remarcação neste site, portanto, deve ser válida. Uma vez postados, os
Misplaced &
avisos se transformam em normais.fonte
Destaque de sintaxe,
63766464/256 ≈ 25,25+0.34375 graças a Ismael Miguel (usando uma guia em vez de 4 espaços)!
Isso usa a anotação mais curta (infelizmente os espaços parecem ter importância) para obter o destaque da sintaxe
lang-c
, abre um bloco de código e o preenche&
e0
:Começamos
&
porque ele se expande&
e é usado a0
seguir, alternando esses constantemente cria novos<span>
elementos com umclass
atributo. Infelizmente, não podemos usar apenas&
ou&<&<...
porque eles permanecem iguaispun
-<div>
Produz:
E renderizado pelo seu navegador, resulta em:
fonte
<pre class="lang-c prettyprint-override"><code>&0&0& ... 0&0&0& </code></pre>
onde...
é mais do mesmo. As tags span não estão lá. Isso é uma pontuação de 739/256 = 2,887190/50 = 3.8: itálico
Como se vê, sua preocupação com 3 caracteres é verdadeira.
*q*
gera<em>q</em>
dando uma proporção de 10/3. Dois retornos de<p>...</p>\n\n
carro são fornecidos (os dois retornos de carro não são necessários, mas parecem ser produzidos) e uma proporção resultante de 9/2. Relação total, 19/5.Html resultante:
Em ação:
q
q
q
q
q
q
q
q
q
q
fonte
> q
para usar em<blockquote>
vez de<em>
é melhor. (Nota: Você fazê-lo para todas as outras linhas, caso contrário é apenas um tag)222/53 = <4.2: Escapes desagradáveis em uma inclusão de imagem.
Resulta em:
O HTML resultante deve ser aproximadamente:
Isso abusa da inclusão de imagens e precisa escapar das coisas.
Costumava ser muito melhor, mas aparentemente a redução da SE é suficientemente fora do padrão para arruiná-la.
Minha submissão anterior (que não foi como a SE a processou) foi:
428/50 = 8,56: Escapes desagradáveis em uma inclusão de imagem.![&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&](&)
O HTML resultante deve ser aproximadamente:
Isso abusa do fato de que a maioria dos editores de descontos substitui os e comercial no texto alternativo por e comercial com escape duplo, para que ele apareça corretamente. Enquanto isso, um único e comercial é jogado na seção src para que o analisador realmente o veja como uma imagem.
fonte
[1]:https://&
em uma linha e usar![&][1]
mais vezes?MathJax: 13.579 / 52 = 261,13
Apenas cria um monte de MathJax vazio em linha:
Código HTML (pode inspecionar o espaço vazio acima):
fonte
4830/256 = 18,87
Uma ideia baseada na correção automática de HTML. Não é uma pontuação muito alta.
fonte
421/56 = 7,518
Que produz o seguinte HTML no SE:
... e a seguinte saída:
&
&
&
&
&
&
fonte
11190/255 = ~ 43,88
Fui inspirado por essa resposta principal, mas sou burro demais para vencê-la e cheguei à contagem máxima de caracteres, então acho que terei que ficar satisfeito com o que tenho ¯ \ _ (ツ) _ / ¯. Na verdade, existem dois espaços após o último bloco de citação, mas a formatação não o mostra.
> - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - >
HTML:
fonte