Напишите программу, которая считает до бесконечности, начиная с одной.
Правила:
- Ваша программа должна войти в систему
STDOUT
или приемлемую альтернативу, если STDOUT
она недоступна.
- Ваша программа должна быть полной, работающей программой, а не функцией или фрагментом кода.
- Ваша программа должна выводить каждое число с разделяющим символом между ними (перевод строки, пробел, табуляция или запятая), но это должно быть согласовано для всех чисел.
- Вы можете напечатать числа в десятичном, одинарном или базовом 256, где каждая цифра представлена байтовым значением .
- Ваша программа должна считать как минимум до 2 128 (включительно) без проблем и без исчерпания памяти на приемлемом настольном ПК. В частности, это означает, что если вы используете унарный код, вы не можете хранить унарное представление текущего числа в памяти.
В отличие от наших обычных правил, не стесняйтесь использовать язык (или языковую версию), даже если он новее этой задачи. Языки, специально написанные для предоставления 0-байтового ответа на этот вызов, являются честной игрой, но не особенно интересными.
Обратите внимание, что должен быть переводчик, чтобы представление можно было проверить. Разрешается (и даже поощряется) самостоятельно писать этот переводчик для ранее не реализованного языка.
- Речь идет не о поиске языка с кратчайшим решением для этого (есть такие, где пустая программа делает свое дело) - речь идет о поиске кратчайшего решения в каждом языке. Поэтому ни один ответ не будет помечен как принятый.
Каталог
Фрагмент стека в нижней части этого поста создает каталог из ответов а) в виде списка кратчайшего решения для каждого языка и б) в качестве общей таблицы лидеров.
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
## Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш результат равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
## Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать имя языка ссылкой, которая будет отображаться во фрагменте кода:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><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="language-list"> <h2>Shortest Solution 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> <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> <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><script>var QUESTION_ID = 63834; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 39069; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "//api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "//api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(42), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>
Ответы:
Лабиринт , 5 байт
IP IP в коде ходит по кругу ♫
Соответствующие инструкции:
источник
:
\
> <> , 8 байт
шаги:
(Менее эффективная память (следовательно, недействительная) программа
llnao
.)источник
Haskell, 21 байт
Произвольные целые числа и бесконечные списки делают это легко :-)
К счастью
mapM_
, в прелюдии. Если быData.Traversable
было так же, мы бы даже могли уменьшить его до 19 байт:источник
sequence
бы получить результат, чтобы это действительно произошло.[1..]
разрешено, так как он печатает все числа с запятой между ними? или первый[
всё испортил?[
не допускается.Gol> <> , 3 байта
шаги:
источник
Marbelous ,
114504632 байтаПечать десятичных знаков - это боль!
Определенно не выиграл с этим, но я подумал, что смогу это сделать. Я надеюсь, что все в порядке, что это добавляет вывод к 40 нулям (чтобы соответствовать 2 ^ 128).
источник
Ehun
доске, которое должно увеличивать следующую цифру, но не работает должным образомinclude/
по умолчаниюC (только 64-битная архитектура), 53 байта
Опирается на указатели размером не менее 64 бит и печатает их в шестнадцатеричном виде с использованием
%p
спецификатора. Программа вернется сразу, когда достигнет 2 ^ 128.источник
Гексагония ,
1211107 байтСпасибо alephalpha за встраивание кода в длину стороны 2.
Развернутая:
Это довольно просто.
10
записывает 10, т.е. перевод строки на начальный край памяти. Затем})!';
многократно выполняется в цикле:}
перейти к следующему краю памяти.)
увеличить его.!
выведите его как целое число'
вернитесь к 10.;
распечатать его как символ.Я считаю, что это оптимально (хотя далеко не уникально). Я позволил сценарию грубой силы, который я написал для этого ответа, искать 6-байтовые решения в предположении, что он должен содержать хотя бы по одному на каждый из
;
и!
и либо(
или)
, или не будет содержать?
,,
или@
, и он не найти любые решения.источник
Pyth, 4 байта
Объяснение:
источник
f!\n
( Ссылка TIO ) будет работать для 3 байтов, но не уверен, что он использует какие-либо функции, которые были добавлены после вашего ответа.f
была особенность Pyth 4 года назад.до н.э., 10
Необычно, что
bc
корочеdc
.От
man bc
:источник
++i
является выражением, но не присваиванием, и поэтому выводится явно. Вы пытались запустить его?echo 'for(;;)++i' | bc
в вашем ближайшем терминале Linux.Java
139138127123 байтаисточник
for(;;)
для простых 3 байтов.BigInteger b=null;b=b.ZERO;
, к сожалению,=null
это необходимо, даже если это статический доступ.BigInteger
на FQCN только один раз.interface
и удалитьpublic
из функции. Не хочу копировать свой код и публиковать его как новый ответ.Mathematica, 22 байта
Echo
это новая функция в Mathematica 10.3.источник
Echo
дает четыре разделяющих символа: символ новой строки плюс">> "
. Не уверен, что это действительно - может быть, использоватьPrint
вместо этого? Также сохраните байт с помощьюi=0;While[Echo@++i>0]
.Рубин,
1512 байтp
когда задано целое число, печатает целое как есть (любезно предоставлено @philomory )$.
магическая переменная, содержащая количество строк, считанных из стандартного ввода. Он явно инициализируется 0, а также присваивается :)источник
Python 3,
3325 байтНасколько я понимаю, целые числа Pythons имеют произвольную точность и
print()
автоматически создают переводы строк.Спасибо за @Jakub и @ Sp3000 и @wnnmaw! Я действительно не знаю много Python, единственное, что я знал, было то, что он поддерживает произвольные целые числа размера =)
источник
1
является истинным значением в Python (и в большинстве других языков). Такwhile 1:
что достаточно.while
в одну строкуrepr(k)
вместоprint(k)
. Кроме того, я считаю ваш размер байта 25 (без предложенных изменений)repr
вместоprint
.repr
ничего не выводит. @wnnmawrepr
же тогда?Обработка ,
958571 байтЯ пробовал что-то с циклом while, но это приводит к сбою всей обработки, так что я буду придерживаться этого пока.
(Спасибо @ SuperJedi224 и @TWiStErRob за предложения.)
источник
import java.math.*;BigInteger i=BigInteger.ZERO;void draw(){println(i=i.add(BigInteger.ONE));}
что сработает.BigInteger.ONE
изменятьi.ONE
?Самау , 2 байта
Объяснение:
Когда вывод программы представляет собой список, крайние скобки опускаются.
источник
@
«push» есть ошибка.JavaScript (ES6),
999467 байтalert
является общепринятымSTDOUT
эквивалентом для JavaScript, но его использование означает, что последовательные числа автоматически разделяются. Я предположил, что вывод символа после числа не является необходимым из-за этого.источник
2^53
но вопрос требует , чтобы идти до2^128
.Matlab, 132 байта
Хорошо, я думаю, что это первый серьезный ответ, который выполняет эту задачу без тривиального встроенного целочисленного размера abitrary. Эта программа реализует целое число произвольного размера в виде массива целых чисел. Каждое целое число всегда находится в диапазоне от 0 до 9, поэтому каждый элемент массива представляет одну десятичную цифру. Размер массива будет увеличен на единицу, как только мы находимся, например
999
. Размер памяти здесь не проблема, так как2^128
требуется только массив длиной 39.источник
C ++,
146141138 байтИспользование стандартной библиотеки bigint, пожалуй, самый скучный способ ответить на этот вопрос, но кто-то должен был это сделать.
Ungolfed:
Причина, по которой используется
stdio.h
и не используется версия для гольфа,cstdio
состоит в том, чтобы не использоватьstd::
пространство имен.Это мой первый опыт игры в гольф на C ++, дайте мне знать, если есть какие-то хитрости, чтобы сократить это дальше.
источник
'\n'
вместоstd::endl
, сэкономит вам 8 байтов. Также может быть способ использовать CPP #define для сжатия некоторых повторений,i
умолчанию не создается значение 0? Затем вы можете удалить определение и переключить постинкремент на преинкремент, который спасет 2b#import
?C # .NET 4.0,
11110310297 байтЯ не нашел никакого ответа C # здесь, поэтому мне просто нужно было написать один.
Требуется .NET 4.0, потому что это первая версия, включающая BigInteger . Вы должны ссылаться на System.Numerics.dll, хотя.
С отступом:
Спасибо Sweerpotato, Kvam, Berend за сохранение некоторых байтов
источник
class C{static void Main(){var b=System.Numerics.BigInteger.One;for(;;)System.Console.WriteLine(b++);}}
: ~)!Console.WriteLine
в структуру цикла:class C{static void Main(){for(var b=System.Numerics.BigInteger.One;;Console.WriteLine(b++));}}
System
. Это сохраняет один байт, хотя!using System;
(13 байт), вы можете избавиться отSystem.
(7 байт) дважды, сохранив 1 байт.Clojure, 17 байт
Ленивые последовательности и произвольные целые числа точности делают это легким (как для Haskell и CL).
prn
экономит мне несколько байтов, так как мне не нужно печатать строку формата.doseq
вероятно, будет более идиоматичным, поскольку здесь мы имеем дело только с побочными эффектами;map
не имеет большого смысла использовать, так как он создаст последовательностьnil
(которая является возвращаемым значением каждогоprn
вызова.Предполагая, что я считаю всегда, последовательность нулевых указателей, которая возникает в результате этой операции, никогда не возвращается.
источник
MarioLANG , 11 байт
Вдохновленный ответом Мартина Бюттнера на другой вопрос .
источник
CJam, 7 байтов
Объяснение:
Примечание. Необходимо использовать интерпретатор Java.
источник
C 89 байтов
Новый подход (реализация побитового инкремента) в C:
Меньше гольфа
прекратить
Эта версия имеет небольшой недостаток, заключающийся в том, что она не заканчивается (что на данный момент не является обязательным). Для этого вам нужно добавить 3 символа:
источник
forever
Foo , 6 байт
объяснение
источник
Минколанг , 4 байта
Попробуй это здесь. (Ну, на самом деле, будьте осторожны. 3 секунд времени выполнения было достаточно, чтобы набрать ~ 40000.)
1+
добавляет 1 к вершине стека,d
дублирует его иN
выводит вершину стека в виде целого числа с завершающим пробелом. Это происходит из-за того, что Минколанг тороидален, поэтому, когда счетчик программ выходит за пределы правого края, он снова появляется слева.источник
Сборка Intel 8086+, 19 байт
Вот разбивка:
Он выводит 128-битное число на верхних левых 8 позициях экрана. Каждая позиция экрана содержит 8-битный символ ASCII и два 4-битных цвета.
Примечание: оно оборачивается на 2 128 ; просто изменить
8
в систему,mov cx, 8
чтобы9
показать 144 битное число, или даже80*25
показать номера до 2 32000 .Бег
1.44Mb сжатая bzip2, загрузочная дискета в кодировке base64
Создайте образ дискеты, вставив следующую копию
в эту командную строку:
и работать, например, с
qemu -fda floppy.img -boot a
1.8Mb загрузочный ISO
Это сжатый ISO-образ bzip2 в кодировке Base64. Генерация ISO путем вставки
в
и настроить виртуальную машину для загрузки с нее.
DOS .COM
Это исполняемый файл DOS .COM в кодировке base64 :
Создайте файл .COM, используя
и запустить его в (Free) DOS.
источник
Perl ,
343230282623 байтаТест с
источник
for(,,){...}
с{...;redo}
на двоих.SV UNDEF
, что при увеличении не вызоветBigInt
перегрузку - потому что это не aBigInt
. Целочисленные литералы, однако, создаются какBigInt
s. Не так уж странно;)$-
чтобы сохранить его как целое число и вернуться к использованию++$-
?perl -Mbigint -E '{say++$-;$-+=$-;redo}' | more
и оборачивается до 1. Он остается целым, но bigint не вмешивается, к сожалению.Marbelous, 358 байт
16 половинных сумматоров соединены вместе, причем самый правый из них выполняет N ++ каждый цикл, а каждый сумматор передает свой переполнение (00 или 01) следующему в цепочке. Вывод в шестнадцатеричном виде.
В интерпретаторе python есть ошибка, из-за которой теряется вывод из запомненных функций, поэтому вам нужно запустить его с «-m 0», чтобы он работал правильно. Без этого параметра вы можете видеть, как быстро он будет работать без ошибки, но вывод не будет работать правильно.Примечание для себя: исправьте эту ошибку в marbelous.pyЭта ошибка была исправлена в последней версии marbelous.pyисточник
R, 52 байта
(Примечание:
gmp
это внешняя библиотека, поэтому вам может потребоваться загрузить ее, чтобы это решение работало)источник
a=gmp::as.bigz(0);repeat{cat(paste(a<-a+1,''))}
. Вы можете сделать заметку о том, чтоgmp
это внешняя библиотека, которую, возможно, потребуется загрузить.BotEngine,
1281201128x13 = 104Вывод в двоичном виде.
источник