var QUESTION_ID=13152,OVERRIDE_USER=8611;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Ответы:
Befunge (1)
Выходы
0
навсегда. Это работает, потому что в Befunge строки переносятся, и вы получите,0
если выскочите из пустого стека.источник
Исполняемый файл x86 .COM, 7
в шестнадцатеричном виде:
Другим нужны килобайты или больше системных библиотек и времени выполнения. Вернуться к основам:
Вы можете изменить 2-й байт (
0x21
или!
), чтобы изменить вывод.Использует прерывание BIOS для вывода; не нужно DOS, но у меня не было настроено QEMU.
объяснение
Машинный код соответствует следующей сборке:
Все выходные данные находятся в
int
вызове - по этой ссылке int 0x10 с 0x0e в AH выведет байт в AL на экран.Зная, что регистр AX - это 16-разрядное слово, состоящее из AH в старшем байте и AL в младшем байте, мы можем сохранить дополнительную нагрузку (и, следовательно, байт в машинном коде), загрузив их вместе.
источник
Пакетный файл Windows, 2 символа
Называет себя бесконечно.
источник
%0
не имеет@
, поэтому он будет постоянно выводить что-то вроде...> %0
. Это может просто поглотить всю оперативную память, так как это рекурсивно.Befunge 98 - 2
Выводит ",,,,,,,,,," на вечность.
источник
ш, 3 байта
выводит
y
непрерывноисточник
yes
это внешний двоичный файл, а не часть bash (строго говоря).y=yes
и если ваша система не является эзотерической, вы можете предположить, что онаyes
есть в вашем$PATH
(см. Основные утилиты GNU ). С вашей логикой можно предположить странные созвездия для каждого решения.bash
возможности: I'ts в POSIX оболочки основная часть ядра утилитами . (То есть: пожалуйста, измените название на sh: 3 символа ;-)Haskell: 8 персонажей
Старая нить, но веселая
в Хаскеле он печатает
навсегда, так как он в основном работает
Он знает, что
x
это строка, поэтому первый символ есть"
, поэтому его нужно экранировать\"
, но он\
должен экранироваться\\\x
, и так далее, и так далее.источник
fix$show
был бы более эстетичным :-)import Data.Function
, и поскольку он возвращает строку, а не печатает ее, я подвергаю сомнению справедливость подсчета символов. Кроме того, строка на самом деле "\" \\\ "\\\\\\\" \\\\\\\\\\\\\\\ "\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\ "\\\\\\\\\\\\\\\\\…".Пакетный файл Windows, 8 символов
источник
:a\r\ngoto a
потому что Windows использует CRLF3a 61 0a 67 6f 74 6f 20
работает на моих окнах 8 ...: PBrainfuck, 4
С другой стороны,
источник
\x01
ни\xFF
печатные символы. Я предполагаю, что это не было требованием, хотя: - /Java, 54 символа
Лучшая попытка в Java:
источник
for(;;)
образец? Как насчетwhile(true)
?static
блок.Баш, 4 байта
Выходы
./forever2.sh: line 1: $: command not found
постоянно.Поскольку
$0
задний план заземлен, каждый родительский элемент умирает после неверной команды$
, поэтому стек / память не израсходованы, и это должно продолжаться бесконечно.Как ни странно, выход становится все медленнее и медленнее со временем.
top
сообщает, что загрузка ЦП системы близка к 100%, но есть процессы, связанные с памятью или ЦП. Предположительно, некоторое распределение ресурсов в ядре становится все менее и менее эффективным.источник
$0
.ЛОКОЛ (36)
Мысль, которую я бы дал LOLCODE, обладает удивительно большим количеством функциональных возможностей.
источник
HAI
иKTHXBYE
JavaScript: 14
источник
alert()
дает мне эту ошибкуError: Not enough arguments [nsIDOMWindow.alert]
Машина Тьюринга - 6 персонажей:
где
#
- пустой символ (на ленте по умолчанию),s
описывает единственное существующее (начальное) состояние,1
печатает цифру,R
означает смещение вправо,s
в конце остается в том же состоянии.источник
s#1Rs
(текущее состояние, текущий символ, символ для записи, направление к сдвигу, следующее состояние).Хаскелл, 10
Я думаю, что это самый короткий код
Show
.Для тех, кто заинтересован, он печатает:
источник
Marbelous 4
Марбелоус здесь удивительно хорош. Это будет публиковать бесконечное количество знаков доллара
$
, хотя и довольно быстро достигнет предела стека.Как это устроено.
24 - языковой литерал, который падает с доски и печатается в STDOUT в качестве соответствующего символа ascii. MB - это имя, неявно присвоенное основной плате, поскольку основная плата не имеет ввода, она будет запускать каждый тик. И поскольку ячейки вычисляются слева направо, литерал всегда будет печататься до следующего рекурсивного вызова.
Так что это примерно эквивалентно этому псевдокоду:
Решение без бесконечной рекурсии 11
Этот работает, зацикливая литерал между двумя порталами
@0
, всякий раз, когда 24 попадают в нижний,@0
он переносится в ячейку под верхним@0
. Он приземляется на/\
, который является оператором клона, он помещает одну копию мрамора (буквально) слева (обратно на портал), а другую - справа. Затем этот купи падает с доски (так..
как это пустая ячейка) и печатается в STDOUT. В псевдокоде это будет означать:Более короткое решение без бесконечной рекурсии 9
Этот постоянно подбрасывает мрамор между клонером и дефлектором, кладя одну копию в крайнюю правую ячейку, чтобы сбросить ее с доски. В псевдокоде это будет выглядеть примерно так:
нота
В
..
клетках необходимы на два последних платах , так как мрамор приземлится с доски (и быть отброшен) в противном случае. Для некоторого дополнительного удовольствия вы заменяете24
мрамор наFF
и пустую..
ячейку на a??
, что превращает любой мрамор в мрамор между 0 и его текущим значением, а затем опускает его. Угадайте, как это будет выглядеть на STDOUT.источник
С, 23 символа
Чуть короче, чем лучший ответ C / C ++. Печатает пустые строки бесконечно (но если компилируется без оптимизации, переполняет стек).
источник
putc(0)
(или 1, или 2, ..., или 9). Будет ли это работать?putc
требуется 2 параметра.Python 3: 15, 17 или 18 символов
Ответ mdeitrick длиннее в Python 3, который заменяет
print
оператор вызовом функции (15 символов):Это остается самым коротким из тех, что я нашел в Python 3. Однако есть несколько более интересных способов печати в бесконечном цикле, которые длиннее всего на несколько символов.
print()
возвращаетNone
, что! = 9, что делает его бесконечным циклом; the8
no-op, который заменяетpass
(18 символов):iter(print, 9)
определяет итерацию, которая возвращает результатprint()
до тех пор, пока он9
не станет равным (что никогда не происходит).any
потребляет входные данные, повторяемые в поисках истинного значения, которое никогда не приходит, так какprint()
всегда возвращаетNone
. (Вы также можете использоватьset
для того же эффекта.)Или мы можем использовать итерируемое, проверяя, содержит ли оно
8
(17 символов):Или распакуйте его с помощью оператора splat :
Самым странным способом, о котором я подумал, является использование разложения сплат внутри вызова функции
function(*iterable)
. Кажется, что Python пытается поглотить всю итерацию еще до того, как попытается вызвать функцию, даже если вызов функции поддельный. Это означает, что нам даже не нужна реальная функция, потому что ошибка типа будет выдана только после того, как итерация исчерпана (то есть никогда):источник
*iter(print,1),
работает и имеет только 15 символов, но потребляет совсем немного памяти.Пит - 3 кодекса
Выводит бесконечное количество единиц
источник
Исполняемый файл x86 .COM, 5 байт
в шестнадцатеричном виде:
в ассм:
Объяснение:
inc ax
увеличивает регистр AX на единицу.int 0x29
это подпрограмма "fast put char" в MSDOS, которая просто выводит значение в AL (нижняя часть AX) и перемещает курсор на единицу.jmp si
это просто странный способ перепрыгнуть назад, так как регистр SI равен 0x100 почти во всех DOS-подобных операционных системах, где также запускается программа .com;) Вместо этого можно также сделать короткий переход, который также использует 2 байта.Источники:
Начальные значения MSDOS
Кодирование размера WIKI
источник
Bitxtreme , 0,25 байта
Двоичное представление:
Из документации:
Счетчик программы и аккумулятор инициализируются нулями; затем содержимое ячейки памяти 0 вычитается из аккумулятора. Это бывает 0, оставляя аккумулятор на нуле. Поскольку не было переноса, второй бит не добавляется в счетчик программ.
Затем счетчик программы увеличивается на 2 по модулю 2, отправляя его обратно на старт и вызывая бесконечный цикл. На каждом шаге специальная ячейка памяти 0 изменяется, в результате чего ее содержимое (а
0
) записывается на выход.Можно утверждать, что эта программа должна быть оценена как 1 байт, потому что официальный интерпретатор в Python требует заполнения нулями. Однако я не думаю, что заполнение нулями - это действительно код .
источник
Краткое описание: Ruby - 9, Golfscript - 6,> <> - 2, пробелы - 19,
Perl - 2Один язык, который я знаю, и два, которые я никогда раньше не использовал: D
РЕДАКТИРОВАТЬ: Perl один не работал, когда я установил Perl, чтобы попробовать его :(
Руби, 9
Просто печатает 1 на отдельных строках постоянно.
Также куча альтернатив:
10-символьное решение:
Я был на самом деле удивлен, что я мог удалить пространство между первым
1
иwhile
, но, видимо, это работаетГольфскрипт, 6
Моя первая программа Golfscript! :П
> <> ( Рыба ), 2
Пробел , 19
Где
s
представляет пробел,t
представляет вкладку иl
перевод строки.источник
{1p}do
только печатает1
и завершает работу, потому что do является последовательностью exec-pop-test, которая продолжается, только если она проверяет true. (Поскольку здесь нет входных данных, изначально используется стек""
, который после выполнения exec1p
извлекается и проверяет ложность.) Однако, просто добавление dup будет работать, т. Е.{1.p}do
(При 7 байтах).С
2524источник
s/while/main/
return main(puts("1"))
это был бы хвостовой вызов.methodName(void)
принимает ровно ноль параметров.> <> (Рыба) , 2
Творческий способ использовать бесконечное кодовое поле рыбы:
Поскольку указатель инструкции возвращается к началу строки после достижения конца, этот код может быть по существу прочитан как
что означает «прочитать строку« o »и затем вывести ее».
Вы можете проверить код здесь
источник
Perl, 10 символов
Вот еще одно решение на 10 символов с некоторыми другими компромиссами. В частности, для запуска не требуется флаг -n или пользовательский ввод. Тем не менее, он продолжает есть память до бесконечности.
сохранить в файл, выполнить этот файл, и вы получите, например:
источник
say
(который всегда печатает новую строку, даже если он не может найти аргумент из любого места), а неwarn
? (Это требует выбора современного варианта Perl с использованием-M5.010
, но это не учитывается при подсчете вашего персонажа.)дк , 7
печатает 'pdx \ n' бесконечно много раз.
источник
VBA: 12
Аудио выводится, верно?
Поместите это в ваш любимый «любимый» коллегой файл MS Office с поддержкой макросов для некоторого «веселья»!
Бонусные баллы, если они используют наушники.
источник
Семя , 4 байта
Попробуйте онлайн! Выходы
11
бесконечноСоздает следующую программу Befunge-98:
Попробуйте онлайн!
Соответствующая часть просто так:
b
толкает11
в стек и.
печатает его.1
и49
также помещаются в стек, но фактически никогда не печатаются.Анимация запуска кода:
источник
C
262524 (без рекурсии)Печатает бесконечные
'\n'
символы. Это на байт длиннее самого короткого ответа C, но не полагается на оптимизацию хвостового вызова, чтобы избежать переполнения стека.источник
for(;;)
вместо негоwhile(!
!
поскольку это продолжает выводить\n
R, 13 символов
источник
repeat cat(1)
должен работатьPowerShell 2.0:
17118Мое первоначальное решение:
Благодаря Res:
Я думаю, что у Данко Дурбича есть победитель. Я даже не уверен, почему это должно работать, но это работает, и я не могу придумать ничего более короткого до сих пор.
источник
while(1){1}
.while($true){1}
но ваше решение определенно победило - я забыл об этом в PowerShell$true -eq 1
. Опубликуйте это как ответ, и я дам вам голос.for(){1}
.