Я уверен, что большинство из нас слышали о бомбах на молнии и подобных трюках с декомпрессионными бомбами, где злонамеренно созданный ввод создает чрезвычайно непропорциональный результат. У нас даже был вопрос, чтобы сделать это с компилятором в один момент.
Ну, мне приходит в голову, что Markdown - это своего рода формат сжатия, заменяющий громоздкие теги HTML «сжатыми» токенами MD. Следовательно, возможно ли создать бомбу сжатия в Markdown?
Правила соревнований:
Представление должно быть частью текста уценки, длиной от 50 до 256 символов. (Наложение минимума, чтобы избежать умного ответа, размещающего 3-символьный ответ или подобный.)
Представление будет обработано процессором Markdown StackExchange, как это реализовано на этом сайте.
Ваша оценка будет отношением количества символов в итоговом HTML к количеству символов вашего текста уценки.
Самый высокий балл выигрывает.
источник
Ответы:
Цитаты, 137,469 / 256 = 536,99
6 908 символов, 511 новых строк, 130 050 пробелов
Уценка наверняка обрабатывает вложенные блочные кавычки странным образом. Каждый
>
персонаж превращается в<blockquote></blockquote>
такое твердое соотношение от 1 до 25. Но ждать! При рендеринге HTML он также добавляет два пробела для вложения! Эта попытка рендеринга вызывает у моего браузера некоторое горе, и я пока держу его в коде. Не стесняйтесь, чтобы разблокировать его самостоятельно!Ввод кода состоит из 255,
>
за которым следует&
последний символ, который не преобразуется, но он экранируется. Спасибо BWO!
как последний символ, который дает последний блок цитаты класс спойлера с пустым тегом p внутри. Спасибо бта, 11 лишних персонажейВходные данные:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!
Вывод HTML:
Вот как это выглядит в редакторе!
Отображение результатов в виде числа
>
увеличения, как предлагает LambdaBeta:источник
!
перед амперсандом, то к последнему уровню цитаты будет добавлено `class =" spoiler "`. Добавьте его на любой другой уровень, и он сократит вывод.MathJax, 529 252 640 иш / 256 ≈ 2 067 393
Старый добрый код в стиле тысячи смеха
$$\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$$
значительно увеличивает неэффективность представления экзотических символов в MathJax.
Конфигурация ограничения StackExchange MathJax 10 000 макро разложений чествовали, а ограничения браузера клиента, которые с высокой степенью вероятности вызвать проблемы расширяющие макросы, не являются. (Мой браузер также не работает, поэтому эта цифра является приблизительной.)
источник
Сокращенные ссылки: 68 960/256 = 269,375
Только ASCII: 10,114 / 256 = 39,508
Выходные данные представляют собой последовательность элементов, каждый из которых выглядит следующим образом:
После фиксированных накладных расходов на создание ссылки URL каждая 5-символьная ссылка расширяется до
42+strlen(url)
вывода символов. Создайте URL-адрес, чтобы иметь максимальное количество символов, которые необходимо экранировать, и это число увеличивается до47+3*strlen(url)
символов на ссылку. Небольшое экспериментирование показало, что для оптимального вывода использовалось 26 ссылок, по 114 кареток на ссылку.Обновление : если вы интерпретируете ограничение «256 символов», чтобы включить символы Юникода, вы можете выжать больше хаоса. Замена кареток на символ ванны Unicode (🛁, кодовая точка U + 1F6C1) приводит к
47+18*strlen(url)
выходным символам на входной символ, что в общей сложности составляет5457468960 (благодаря еще более короткой нотации ссылок jimmy23013).Ввод Unicode:
Выход представляет собой серию:
источник
[1],[1],[1]...
для ссылок. 2."
имеет больше символов, чем%5E
в не-Unicode версии.15888/50 = 317,76: злоупотребление MathJaX
Это код:
Вот как это выглядит:
& & & & & & & & &
Полученный HTML-код:
Не забывайте своих людей MathJax.
Предостережение: MathJaX показывает ошибку только во время редактирования, поэтому вы должны просмотреть ее в редакторе. Это все еще реализация уценки на этом сайте, поэтому должна быть действительной. После публикации
Misplaced &
предупреждения превращаются в обычные & s.источник
Подсветка синтаксиса,
63766464/256 ≈ 25.25+0.34375 благодаря Исмаилу Мигелю (используя вместо 4 пробела табуляцию)!
Это использует самую короткую (к сожалению, пробелы, кажется, имеет значение) аннотацию для подсветки синтаксиса
lang-c
, открывает блок кода и заполняет его с помощью&
и0
:Мы начинаем с того,
&
что он расширяется&
и использует0
следующее, чередуя их, постоянно создавая новые<span>
элементы сclass
атрибутом. К сожалению, мы не можем использовать только&
или&<&<...
так как они остаются в том жеpun
-<div>
Это производит:
И отображается вашим браузером это приводит к:
источник
<pre class="lang-c prettyprint-override"><code>&0&0& ... 0&0&0& </code></pre>
где...
больше того же самого. Теги span отсутствуют вообще. Это оценка 739/256 = 2,887190/50 = 3,8: курсив
Как выяснилось, ваше беспокойство из трех персонажей - правда.
*q*
генерирует,<em>q</em>
давая соотношение 10/3. Два возврата каретки дают<p>...</p>\n\n
(два возврата каретки не являются необходимыми, но, кажется, произведены), и в результате соотношение 9/2. Общее соотношение 19/5.Результирующий HTML:
В бою:
Q
Q
Q
Q
Q
Q
Q
Q
Q
Q
источник
> q
использовать<blockquote>
вместо<em>
лучше. (примечание: вы делаете это для любой другой строки, в противном случае это просто один тег)222/53 = <4.2: неприятные побеги при включении изображения.
Результаты в:
Итоговый HTML должен быть примерно:
Это злоупотребляет включением изображения и необходимостью избегать вещей.
Раньше было намного лучше, но очевидно, что уценка SE достаточно нестандартна, чтобы разрушить ее.
Мое предыдущее представление (которое не было таким, каким SE его представил) было:
428/50 = 8,56: неприятные побеги при включении изображения.![&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&](&)
Итоговый HTML должен быть примерно:
Это злоупотребляет тем фактом, что большинство редакторов уценки заменяют амперсанды в альтернативном тексте на амперсанды с двойным экранированием, чтобы они правильно отображались. Между тем, в раздел src добавляется один амперсанд, так что парсер действительно увидит его как изображение.
источник
[1]:https://&
помощью строки, а затем использовать![&][1]
больше раз?MathJax: 13 579/52 = 261,13
Просто создает кучу пустых встроенных MathJax:
HTML-код (можно проверить на пустом месте выше):
источник
4830/256 = 18,87
Идея на основе автозамены HTML. Не совсем высокий балл, хотя.
источник
421/56 = 7,518
Который производит следующий HTML на SE:
... и следующий вывод:
&
&
&
&
&
&
источник
11190/255 = ~ 43,88
Я был вдохновлен этим лучшим ответом, но я слишком туп, чтобы победить его и достиг максимального числа символов, так что, я думаю, я должен быть удовлетворен тем, что у меня есть ¯ \ _ (ツ) _ / ¯. На самом деле после последней цитаты есть два пробела, но форматирование не показывает этого.
> - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - >
HTML:
источник