Это довольно просто.
Напишите самую короткую программу, которую вы можете, при этом генерируя максимальный результат.
Чтобы сделать это забавным, программы, которые производят бесконечный вывод, будут дисквалифицированы.
Победителем стала программа с наибольшим соотношением выходного размера / размера кода.
Результаты основаны на том, что работает на моем компьютере - Mac с Mac OS X 10.7.5 с Intel Core i5 и 8 ГБ памяти.
\n
Ответы:
Python: 8-значный код, 387420489 выходных символов - соотношение: 48427561.125: 1
Мы можем получить отношение к бесконечности, добавив больше
**9
s:Например:
который имеет отношение ~ 10 10 10 10 10 8,568 (невообразимо большое число).
источник
**9
s, не станет ли это в итогеInfinity
?**9
s, которое вы можете поместить до того, как результат станетInfinity
.Итак, все это хорошие программы, которые выдают много выходных данных с очень небольшим количеством кода, но ни одна из них не является действительно короткой ...
брейнфук, 5 символов, 255 байт вывода
Я думаю, что это единственный случай использования, где BrainFuck действительно превосходен. Я знаю, что этот не победит, но я не думаю, что мы можем добиться большего успеха, чем пример с Python. Не только это, но ...
брейкфак, 4 символа, бесконечный вывод
Я предполагаю, что это самая короткая программа с бесконечным выводом.
На самом деле, подожди, мой друг только что придумал действительно хороший.
Python, 80 байтов, неизвестный объем вывода
Эта программа определенно остановится в конце концов, но это произойдет только через 8000 лет. Точное количество выводимых символов зависит от скорости, с которой ваш компьютер может воспроизводить символы.
источник
.
выводит бесконечный поток из 0 символов.Perl - 19 байт, 187200000000000000 байт (9852631578947368.42: 1)
166 петабайтов с одним оператором печати, используя не более 1,7 ГБ памяти.
Есть несколько вещей, которые сделали этот вызов более интересным, чем я думал. Perl, похоже, отказывается выделять более 1 ГБ памяти для какого-либо одного списка. Следовательно, 4-байтовая скалярная ссылка на внутреннюю строку может повторяться только 26e7 ≈ 2 28 раз.
$]
это номер «старой версии Perl», который в виде строки имеет длину 8 байт и напоминает5.016002
.С большей системной памятью она должна быть в состоянии пойти выше. Предполагая, что все 8 ГБ фактически были доступны, вы должны использовать
$]x9e8
вместо внутренней строки, которая выдаст 1,62 эксабайт.источник
Ruby and Python, 13 символов, 599994 символов, соотношение ~ 46153: 1
Просто возводит очень большое число в степень другого очень большого числа. Занимает около 20 секунд, чтобы бежать. Я не могу увеличить числа, потому что это сделало бы число бесконечностью.
(Я делал это раньше , сейчас я работаю над созданием цикла для еще более длительного вывода)
Редактировать: я сделал это!
Рубин, 28 символов, выход 6e599999, соотношение ~ 6e599998 (я думаю)
Не проверено (по понятным причинам), но я уверен, что первое число составляет около 1e599994, а умноженное на 599994 - около 6e599999. Теоретически это будет работать, но я не уверен, что это может привести к поломке вашего компьютера, поэтому отказ от ответственности: я не несу ответственности, если это каким-либо образом повредит вашему компьютеру
Конечно, вы можете продолжать:
Рубин, 37 символов, выход 6e359992800041, соотношение ~ 6e359992800040
И так далее, но я сомневаюсь, что любой компьютер справится с этим: P
источник
Если бесконечный ввод был разрешен,
Так как это не так,
(25128 вывод: 20 входов = 1256,4: 1)
Я не на Linux box, но я думаю, что вы могли бы сделать что-то вроде
и получить огромный выход. (через ответ GigaWatt)
источник
timeout 99d
. Да, 99 дней выполнения. Кроме того, я не уверен в этом, но в конечном итоге вы очистите пул энтропии,/dev/random
и он заблокируется, поэтому/dev/urandom
может быть более уместным. (Мне удалось получить 40 МБ / сurandom
и только 128 КБ / сrandom
)HQ9 +, 11471
Фактическое количество символов варьируется в зависимости от переводчика, но, вероятно, около 10000 будет правильным?
источник
C #: 108 символов. Соотношение: 742123445489230793057592: 1
Он просто загружает и распечатывает Список юрисконсультов Википедии Верховного суда США (4344904 символа) 18446744073709551615 раз.
источник
for(ulong i=0;i<ulong.MaxValue;i++){Console.Write(new string('a',int.MaxValue));}
2147483647 символов * 18446744073709551615 раз = 39614081238685424720914939905/81 => Соотношение: 489062731341795366924875801~ - ~! - Соотношение: (64 4 4 4 64 ) / 154 ~ = 10 10 10 10 10 1,58328920493678
Как это работает: Во- первых, он устанавливает
'
4 ^ 3 или 64. Затем он делает''
функцию , которая устанавливает'
для'
^ 4 * раз (где * это вход).'''
Затем делается функция, которая вызывает''
с вводом как'
^ 4. Затем''''
производится функцию , которая вызывает'''
с'
^ 4 , как это вход.''''
затем вызывается с вводом 64. Наконец,''
изменяется на функцию, которая печатает пробел * раз; затем вызывается с помощью ввода'
.Оказывается, в конце концов,
'
это 64 4 4 4 64 , и длина моей программы составляет 154 ; вставьте это в Wolfram | Alpha, и оно выплюнет 10 10 10 10 10 1.583328920493678 , которое он даже не потрудится вычислить. Я даже не знаю, сколько в нем цифр , но 64 4 4 содержит 463. Довольно неплохо для языка, который поддерживает только унарные явные числа и не имеет функции экспоненты; 3Я мог бы сделать это намного больше, но, излишне.
источник
Javascript: 27 символов; 260 431 976 символов; Соотношение 9 645 628,74
Этот код рекурсивно кодирует ввод
61
в Base64 61 раз. Кодирование любого ввода длиныn
в Base64 производит вывод длиныn * 8/6
, округленный до кратного 4.Это должно выполняться из консольной среды JavaScript, которая изначально поддерживает функцию кодирования Base64
btoa
. (Любой современный браузер, но не Node.js.) Примечание. Chrome не может работать выше, чемi=61
, в то время как Firefox может только работатьi=60
. Также обратите внимание, что консоль Chrome не может отображать вывод, потому что он слишком большой, но вы можете проверить размер результата, выполнивЕсли бы этой программе было разрешено запускаться по максимуму
i=99
, она выдала бы гипотетический результат размером 14 566 872 071 840 (14,5 триллионов, 14,5e12) символов при гипотетическом соотношении около 540 миллиардов (5,39e11).источник
Ruby, 23 символа - ~ 500000000000000 (5e14) Вывод
Ti-Basic 84, 13 символов - ~ 3000 Вывод
Назовите программу
prgmA
источник
рубин,
2839644 символовНе очень короткий, но он компенсирует это в результате, а это так много, что я пока не смог измерить его.
источник
1e127
выходе символов. в любом случае, присвоение переменной уменьшит размер кода примерно вдвое. также,1e99
это большее число, которое занимает меньше места. также используйтеmap
вместоeach
, используйтеputs
вместоprint
, удалите лишние пробелы междуprint
и"ier...
. Вы также можете заменить эту большую строку'a'*999
(или даже?a*999
), которая является более длинной строкой, которая занимает меньше места. Резюме: это вовсе не игра в(0..1e99).map
переменную? какa=(0...1e99).map;a{a{a{a{a{puts'a'*99}}}}}
a=(0...1e99).map
. Возможно, вы захотите немного прояснить это.0..1e9
будет использовать около 4 ГБ.Mathematica 9 символов Соотношение: ~ 4564112: 1
Ниже приведена картина ввода Mathematica. Я не понял, как сделать это в SE.
Вот снимок экрана, показывающий количество цифр в выводе.
IntegerDigits
преобразует вывод в список цифр.Length
подсчитывает количество цифрКлавиши для ввода: 9, ctrl6, 9, ctrl6, 9, ctrl6, 9, ctrl6, 9....
источник
Befunge-93: 48 символов, около ((2 ^ 32) ^ 2) * 10 символов на выходе
Стек Befunge теоретически бесконечен, но числа, которые хранятся в стеке, ограничены размером беззнакового длинного целого числа (здесь предполагается, что оно составляет 32 бита). Таким образом, для интерпретатора Befunge (x + 1)> x ложно для правильного значения x. Мы используем этот факт, чтобы сначала сдвинуть все значения от нуля до максимума (дважды, по одному на каждое третье число), а затем для каждого значения в стеке мы выводим и уменьшаем его, а затем выталкиваем его, когда оно достигает нуля. В конце концов стек очищается, и программа завершается. Возможно, я немного не согласен с размером вывода, но он должен быть где-то на этом этапе.
источник
C: 48 символов, ок. (2 ^ 32 - 1) * 65090 байт
Обратите внимание, что 65090 не является точным и зависит от размера стека. Программа в конечном итоге остановится, когда она выйдет из строя. Кроме того, я мог бы просто поместить более длинную строку в put (), чтобы рацион приблизился к бесконечности, но это кажется довольно обманчивым.
источник
Java (131): неизвестно, но конечное количество
Используя низкую вероятность того, что Math.random () попадет в 0 в цикле, а затем перейдет в циклы 2 ^ 64-1 через foreach с выводом 1234567890;
источник
Python 3, 115 байт, работает в течение 7983 лет (неизвестное количество символов)
РЕДАКТИРОВАТЬ: Ymbirtt избили меня к этому.
Я знаю, это не очень коротко, и я знаю, что другой ответ Python очень длиннее, но я решил дать этому шанс.
Программа работает около 8000 лет, что, как вы знаете, довольно долгое время.
Он непрерывно получает текущее время, используя
datetime.datetime.now()
функцию, и сравнивает его с9999-12-31 24:59:59.999999
, насколько я знаю, максимальная дата в Python.Если это является равным, то программа останавливается. Если это не так, он постоянно выводит
a
.источник