var QUESTION_ID=93441,OVERRIDE_USER=41723;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>
Ответы:
Sesos ,
11 33 байтаПопробуйте онлайн! Проверьте Debug, чтобы увидеть сгенерированный код SBIN.
Сесос сборка
Двоичный файл выше был сгенерирован путем сборки следующего кода SASM.
источник
Haskell, 19 байтов
Производит бесконечный список
[0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7...
Haskell допускает бесконечные списки изначально. Печать такого списка будет печатать его элементы один раз навсегда.
источник
[n,1-n]
![1-n,n]
даст более приятный вывод.concatMap (\n -> [1-n, n]) [1..]
, верно? Приятно!Brainfuck, 6 байтов
Это использует обтекание ячейки и печатает все возможные значения. В Brainfuck нативное целочисленное представление является байтовым значением .
Попробуйте онлайн!
источник
int
внезапно нет больше или меньше битов только потому, что вы добавили или удалили некоторый оперативный памяти.Cubix ,
1412 байтовПроверьте это онлайн! Теперь вы можете регулировать скорость, если хотите, чтобы она работала быстрее или медленнее.
Как это устроено
Первое, что делает интерпретатор, это удаляет все пробелы и дополняет код no-ops
.
до тех пор, пока он полностью не уместится на кубе. Это означает, что приведенный выше код также может быть написан так:Теперь код запускается. IP (указатель инструкций) начинается в верхнем левом углу крайне левого лица и указывает на восток. Вот пути, которые нужно пройти во время работы программы:
IP начинается на красном следе в дальнем левом углу изображения. Затем он запускается
OSo;
, что делает следующее:O
Выведите TOS (верхнюю часть стопки) как целое число. В начале программы стек содержит бесконечные нули, поэтому он печатается0
.S
Нажмите32
, код символа для пробела.o
Распечатайте TOS как символ. Это печатает пробел.;
Поп TOS. Удаляет32
из стека.Теперь IP попадает в
?
точку, которая направляет его влево, вправо или прямо, в зависимости от знака TOS. Прямо сейчас, TOS есть0
, так что все идет прямо. Это синий путь;.
ничего не делает, и IP попадает в стрелку>
, которая снова направляет его на восток по красной дорожке.~
принимает побитовое НЕ ТОС, изменяя его на-1
.Здесь IP достигает правого края сети, который оборачивает его обратно влево; это снова печатает TOS (на этот раз
-1
) и пробел.Теперь IP попадает
?
снова. На этот раз TOS есть-1
; так как это отрицательно, IP поворачивает налево, выбирая зеленый путь. Зеркало\
отклоняет IP-адрес(
, который уменьшает TOS, изменяя его на-2
. Он возвращается и поражает стрелу;~
принимает снова побитовое НЕ, поворачивая-2
к1
.Снова выводится TOS и печатается пробел. На этот раз, когда IP попадает в
?
, TOS есть1
; так как это положительно, IP поворачивает направо, выбирая желтый путь. Первый оператор, с которым он сталкиваетсяS
, это нажатие лишнего32
;;
хлопает его , прежде чем он может вызвать какие - либо проблемы.Теперь IP возвращается к стрелке и выполняет свою процедуру,
~
изменяя TOS-2
иO
печатая его. Так как TOS снова отрицательный, IP снова выбирает зеленый путь. И он просто продолжает ездить так вечно *: красный, зеленый, красный, желтый, красный, зеленый, красный, желтый ..., печатая в следующем цикле:TL; DR
Эта программа неоднократно проходит через эти 3 простых шага:
Неразделенная версия, 6 байт
Удаление разделения настолько упрощает программу, что она может поместиться в единичный куб:
* Примечание : ни одна из программ не является действительно бесконечной, так как они рассчитывают только до 2 52 (где JavaScript начинает терять целочисленную точность).
источник
MATL , 8 байт
При этом используется тип данных по умолчанию MATL, то есть
double
он работает до2^53
абсолютного значения. ВыходПопробуйте онлайн!
объяснение
источник
@_@XD
а не@_D@D
так, вы можете включить 0 при первом запуске.XD
+1 для смайликаЯзык программирования Шекспира , 227 байт
Очевидно, что этот ответ далеко не победил, но мне понравилось, что это тот случай использования, для которого SPL сравнительно хорошо подходит.
Разъяснение:
Как вы можете видеть, сравнивая этот код с моим ответом на связанную задачу подсчитать навсегда (то есть вывести все натуральные числа), длина кода SPL довольно сильно возрастает при увеличении размера задачи ...
источник
Let us return to scene II.
должно бытьscene I
.$puck
в 0, а затем отсчет больше не будет работать. Я добавил недостающееI
в коде и исправил длину байта (которая в любом случае была немного опа)Python 2, 27 байт
Печать
-1 0 -2 1 -3 2 -4 3 ...
источник
05AB1E ,
96 байтовСохранено 3 байта благодаря Аднану
Попробуйте онлайн!
Отпечатки
0, -1, 1, -2, 2 ...
разделены переводом строки.источник
[N,N±,
.±
и это оказалось на 3 байта длиннее вашего.D,
может быть заменено на,=
чтобы сохранить байт.GNU sed, 189 + 2 (флаги rn) = 191 байт
Скорее всего, это самое длинное решение, так как у sed нет целочисленного типа или арифметических операций. Поэтому мне пришлось эмулировать произвольный оператор приращения размера, используя только регулярные выражения.
Бегать:
Выход:
источник
Brainfuck, 127 байт
Попробуйте онлайн!
Данная бесконечная лента теоретически будет работать вечно.
несжатого
источник
ShadyAsFuck , 3 байта
Объяснение:
Это использует обтекание ячейки и печатает все возможные значения. В SAF нативное целочисленное представление является байтовым значением .
источник
R,
2524 байтаГольф один байт благодаря @JDL.
Попробуйте онлайн!
Пример вывода:
источник
while(1)
на,repeat
чтобы сохранить символ.Пакетная, 56 байтов
Выход:
и т. д. Работает до 2147483647; 58 байт, если вы хотите (-) 2147483648 в выводе:
44 байта, если вывести все поддерживаемые положительные целые числа, тогда все поддерживаемые отрицательные целые числа, а затем повторяться бесконечно, приемлемо:
источник
Java 7,
151134122118 байт12 байтов сохранено благодаря @flawr (и @xnor косвенно)
После смены правила .. (
595663 байта)Поскольку в Java
2147483647 + 1 = -2147483648
мы не можем просто делатьi++
и продолжать бесконечно, так как задача состояла в том, чтобы напечатать все числа один раз. С учетом указанных выше кода с добавлением диапазона, то вместо этого напечатать все целые числа от-2147483648
до2147483647
один раз, в следующей последовательности:0, -1, 1, -2, 2, -3, 3, -4, ..., 2147483646, -2147483647, 2147483647, -2147483648
. Спасибо @ OlivierGrégoire за указание на поведение Java в отношенииMIN_VALUE-1
/MAX_VALUE+1
. Попробуй это здесь.Ungolfed & тестовый код:
Попробуйте здесь - в результате ошибки во время выполнения
Выход:
источник
int
программа -version, учитывая бесконечное время, будет печатать каждое целое число бесконечное количество времени.MAX_VALUE
, вы можете проверить мой ответ (вероятно, все еще на последней странице).DC (GNU или OpenBSD) - 16 байт
Эта версия не короче указанной ниже, но должна быть в состоянии работать без взрыва стека на вашем ПК. Тем не менее, бесконечные большие числа будут занимать бесконечные объемы памяти ... когда-нибудь ...
Из-за этой
r
команды ему нужен GNU-DC или OpenBSD-DC .Контрольная работа:
DC - 16 байтов
Немного значит теперь. ;-)
Эта версия использует длину стека как счетчик, позволяя стеку расти.
Контрольная работа:
DC - 17 байтов
Без подвохов.
Контрольная работа:
источник
[-]P
, чтобы делать45P
. «GNU-Dc или OpenBSD-Dc» - есть ли какие-либо другие версии, обычно встречающиеся в дикой природе?dc
имеет только несколько операторов. Я разработал их независимо от них.r
"своп". Иногда я сбиваюсь с толку, когда смотрю на разные версии. Вероятно, никто больше не хочет кодировать в древнем Dc (и тамr
можно было бы очистить стек). Может быть, я бы изменил «Dc» на «AT & T dc»? ... и спасибо за45P
подсказку ...C # 74 байта
Выход:
Попробуй:
dotnetfiddle.net (ограничено 1000)
источник
public
модификаторы и сохранить 14 байтов. Значения по умолчанию будут одинаково хороши.Рубин,
26221916 байтПечатает числа, разделенные переводом строки. -3 байта от @manatwork. -3 байта от @ m-chrzan.
источник
p
что сделайте это тоже.0.step{|n|p n,~n}
для 17 байтов.JavaScript,
2926 байтНеограниченная версия, 26 байт
Сохранено 3 байта благодаря ETHproductions
отобразит все целые числа от -9007199254740991 до 9007199254740992.
Бесконечная версия (ES6),
114112 байтСохранено 2 байта благодаря ETHproductions
будет отображать все целые числа, учитывая бесконечное время и память.
источник
n[a,b,c]
возвращаетn[c]
, так что вы можете оставить скобки вn[(a||n.unshift(1),0)]
.1
ни в цикле for;for(;;)
работает вечно Вы можете сохранить еще два байта с помощьюfor(n=1;;)alert([1-n,n++])
. Кроме того, здесь больше не используются какие-либо функции ES6 ;-)> <> ,
1915 байтЭто печатает следующее:
... и так далее. Разделитель - это новая строка.
Переписано после прочтения ответа @ xnor, чтобы использовать версию этого алгоритма. Начиная с
n=1
, программа печатает1-n
иn
, после каждого, следует за новой строкой, а затем увеличивает ееn
. После превышения максимального значения программа завершится с ошибкойsomething smells fishy...
. Как именно это произойдет, зависит от реализации интерпретатора.Предыдущая версия:
Начиная с 0, программа зацикливается бесконечно. В каждом цикле текущее значение печатается вместе с новой строкой. Затем он отрицается и увеличивается, если положительный.
источник
Утилиты Bash + GNU, 26
источник
$[++i]
делает это в Bash.seq NaN
на пробежку, и после 999999 года печать выполняется в научной записи с точностью до 5 цифр. Что касается задачи, то это значение является наибольшим целым числом, которое вы печатаете, что хорошо, так как остальные не будут повторять предыдущее число. Также заметил, что вы можете запустить seq сinf
учетом регистра, как и дляnan
. +1до н.э.,
1716 байтИзменить: на 1 байт меньше благодаря Digital Trauma .
В дополнение к разнообразию языков, используемых до сих пор, я представляю решение bc, которое работает с целыми числами произвольного размера . После кода требуется новая строка, которая считается в байтах.
На первой итерации
i
не определено, но печать дает 0, к моему удивлению.источник
for(;;){i;-++i}
bc
он тоже был.for(;;){i++;-i}
(той же длины).Лабиринт , 9 байт
Попробуйте онлайн!
Это также работает и по сути то же самое:
объяснение
Поток управления в этом коде довольно забавный. Помните, что указатель инструкций (IP) в программе Labyrinth следует по пути непробельных символов и проверяет вершину стека в любом соединении, чтобы решить, какой путь выбрать:
Когда IP попадает в тупик, он оборачивается (выполняя команду в конце только один раз). И IP начинается в левом верхнем углу, двигаясь на восток. Также обратите внимание, что для начала стек неявно заполнен бесконечным количеством нулей.
Программа начинается с этого короткого бита:
Теперь IP находится на соответствующем соединении и движется прямо на то,
(
что уменьшает вершину стека до-1
. IP попадает в тупик и оборачивается.:
дублирует вершину стека еще раз. Теперь вершина стека отрицательна, а IP поворачивается влево (запад). Теперь выполним еще одну итерацию основного цикла:На этот раз вершина стека положительна, поэтому IP поворачивается направо (запад) и немедленно выполняет еще одну итерацию основного цикла, которая печатает
1
. Затем после того , как отрицается мы снова попали в:
с-1
в стеке.На этот раз IP поворачивает налево (восток). Это
"
просто не работает, и IP поворачивается в тупик.:
делает еще одну копию, и на этот раз IP поворачивает на юг.(
уменьшает значение до-2
IP снова поворачивается. Поскольку вершина стека по- прежнему отрицательна, IP теперь поворачивается на запад:
и выполняет следующую итерацию основного цикла.Таким образом, IP теперь будет выполнять итерацию между итерацией в узком цикле, печатью положительного числа и итерацией, которая проходит через оба тупика, чтобы уменьшить значение перед печатью отрицательного числа.
Вы можете спросить себя, почему
"
во второй строке есть:
знак, если он на самом деле ничего не делает: без него, когда IP достигает отрицательного значения, он не может повернуть налево (восток), поэтому вместо этого он повернет направо (запад) (Как правило, если обычное направление на перекрестке недоступно, IP будет принимать противоположное направление). Это означает, что IP также никогда не достигнет(
дна, и мы не могли отличить положительные и отрицательные итерации.источник
JavaScript (ES5),
32313029 байтПечать
0 -1 1 -2 2 -3 3 -4 4 -5 5 ...
Сохранено 1 байт благодаря Патрику Робертсу! Сохранено 2 байта благодаря Конору О'Брайену!
источник
[i++,-i].map(alert)
вместоalert(i++),alert(-i)
?for(;;)
на один байт корочеwhile(1)
map
- ES6i=0;
бит внутри цикла for, чтобы сохранить байт.Java,
6554 байтаТестовый код
источник
biggest magnitude of the standard integer type of your language
int
является стандартным целочисленным типом Java.()->{for(int i=0;;)System.out.print(i+" "+(1-i++));};
C #, 83 байта
Ungolfed:
Выходы:
источник
void f(){code_present_in_main}
что достаточно для подсчета байтов. Что касается самого кода, вы можете поиграть в него примерно так:void f(){for(decimal n=1;;)Console.Write((1-n)+","+n+++",");}
( 61 байт )decimal n=0
иn++;
внутри цикл for:void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}
:)C #
8666 байтНовый ответ:
Чистый:
Старый ответ (86 байт):
Ungolfed:
источник
Enumerable.Range
и один раньшеint.MaxValue
.void f(){for(var n=1;;)Console.Write((1-n)+","+n+++",");}
( 57 байт ) .J, 25 байт
Работает на сайте , но пока не могу проверить это на компьютере. Печатает номера как:
и т.п.
источник
Powershell,
201918 байтУлучшено, бесстыдно крадя из ответа TimmyD
Выход:
Старая версия:
Не уверен, почему переменная tbh, но - undeclared (или - $ null) оценивается как 0, что позволило нам сэкономить 2 байта в этой версии ...
источник
Пайк ,
72 байтаПопробуй это здесь!
7 байт
Попробуй это здесь!
Если печать + -0 в порядке,
oD_r
источник
Брахилог , 2 байта
Попробуйте онлайн!
Поскольку программе не дается никаких входных данных, входная переменная основного предиката остается неограниченной. Сначала предполагается, что оно равно 0, но при выполнении выполнения
⊥
оно возвращается к единственно возможной точке отказа: выбору значения для входной переменной. Затем он пробует 1, -1 и любое другое целое число, печатая каждое, отделенное символами новой строки, навсегда, потому что⊥
всегдаẉ
вызывает возврат, и эффект выполняется немедленно.источник