Прикинь навсегда


71

Напишите программу, которая считает до бесконечности, начиная с одной.

Правила:

  • Ваша программа должна войти в систему 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


29
Я не уверен , как совместить необходимо вывести каждый номер с разделяющим символом между с может напечатать число [...] в базе 256 .
Деннис

6
Могу ли я порекомендовать песочницу для будущих задач, чтобы все эти детали были улажены до того, как люди начнут публиковать ответы? :)
Мартин Эндер

3
@IlmariKaronen Я понимаю, что это ограничение памяти, а не ограничение времени. возможно ограничение по времени для каждого приращения. просто установите счетчик на 2 ** 128-10 и посмотрите, сколько времени потребуется, чтобы сделать последние десять шагов.
Спарр

5
Можем ли мы иметь ведущие нули на выходе?
Пауло Эберманн

4
Тьфу !!! У меня есть ответ для TI-89 (56b), но я не могу публиковать сообщения, потому что я новичок на сайте и у меня нет представителя 10+!
gregsdennis

Ответы:


63

Лабиринт , 5 байт

):
\!

IP IP в коде ходит по кругу ♫

Соответствующие инструкции:

)       Increment top of stack (stack has infinite zeroes at bottom)
:       Duplicate top of stack
!       Output top of stack
\       Output newline

77
Программа печальная, что не останавливается ..
Оптимизатор

7
@Optimizer def sad (действительно):
YoYoYonnY

1
Почему это не 4 байта?
Аурел Белый

2
@ Aurel300 Пятый байт - это :\
новая строка

@ Sp3000 Ах, да. Дурак я. :)
Aurel Bílý

46

> <> , 8 байт

01+:nao!

шаги:

  • Нажмите 0 в стеке
  • Добавьте 1 к верхнему элементу стека
  • Повторяющийся элемент верхнего стека
  • Выведите вершину стека как число
  • Вывести новую строку
  • Перейдите к шагу 2, обернувшись и выполнив следующую инструкцию (шаг 11)

(Менее эффективная память (следовательно, недействительная) программа llnao.)


66
+1 для нетерпеливых требовательных upvote неявных в строке кода, которая в основном гласит «плюс один, сейчас!».
Янус Бах Жакет

24

Haskell, 21 байт

main=mapM_ print[1..]

Произвольные целые числа и бесконечные списки делают это легко :-)

К счастью mapM_, в прелюдии. Если бы Data.Traversableбыло так же, мы бы даже могли уменьшить его до 19 байт:

main=for_[1..]print

Нет ли символа, обобщающего map / mapM и т. Д.?
JDługosz

@ JDługosz: не то, что я знаю
Берги

Ах, потому что результат все равно должен был sequenceбы получить результат, чтобы это действительно произошло.
JDługosz

просто не [1..]разрешено, так как он печатает все числа с запятой между ними? или первый [всё испортил?
Беконаро

@Baconaro: это список, он ничего не печатает. GHCi печатает результат, если вы введете термин в ответ, но это не работающая программа. И да, ведущий также [не допускается.
Берги

23

Gol> <> , 3 байта

P:N

шаги:

  • Добавьте 1 к верхнему элементу стека (при запуске это неявный 0)
  • Повторяющийся элемент верхнего стека
  • Выскочить и вывести верхнюю часть стека в виде числа и новой строки
  • Обернитесь к шагу 1, когда мы достигли конца строки

21

Marbelous , 11450 4632 байта

Печать десятичных знаков - это боль!

Определенно не выиграл с этим, но я подумал, что смогу это сделать. Я надеюсь, что все в порядке, что это добавляет вывод к 40 нулям (чтобы соответствовать 2 ^ 128).

00@0..@1..@2..@3..@4..@5..@6..@7..@8..@9..@A..@B..@C..@D..@E..@F..@G..@H..@I..@J
\\++..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00
..EhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhun
....AddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddt
..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7\/
../\&8..........................................................................
....@0..........................................................................
....../\&8......................................................................
....//..@1......................................................................
........../\&8..................................................................
......////..@2..................................................................
............../\&8..............................................................
........//////..@3..............................................................
................../\&8..........................................................
..........////////..@4..........................................................
....................../\&8......................................................
............//////////..@5......................................................
........................../\&8..................................................
..............////////////..@6..................................................
............................../\&8..............................................
................//////////////..@7..............................................
................................../\&8..........................................
..................////////////////..@8..........................................
....................................../\&8......................................
....................//////////////////..@9......................................
........................................../\&8..................................
......................////////////////////..@A..................................
............................................../\&8..............................
........................//////////////////////..@B..............................
................................................../\&8..........................
..........................////////////////////////..@C..........................
....................................................../\&8......................
............................//////////////////////////..@D......................
........................................................../\&8..................
..............................////////////////////////////..@E..................
............................................................../\&8..............
................................//////////////////////////////..@F..............
................................................................../\&8..........
..................................////////////////////////////////..@G..........
....................................................................../\&8......
....................................//////////////////////////////////..@H......
........................................................................../\&8..
......................................////////////////////////////////////..@I..
............................................................................../\&8
........................................//////////////////////////////////////..@J
&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9
Sixteenbytedecimalprintermodulewitharegi

:Sixteenbytedecimalprintermodulewitharegi
}J}J}I}I}H}H}G}G}F}F}E}E}D}D}C}C}B}B}A}A}9}9}8}8}7}7}6}6}5}5}4}4}3}3}2}2}1}1}0}00A
/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A
%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..
+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O..
+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O..

:/A
..}0..}0..
..>>}0....
..>>>>\\..
....//..//
../\>>\\..
....>>..//
....>>\\..
....>>....
\\>>//....
..>>......
..>>......
../\......
..../\<<..
......<<..
..\\<<//..
....~~....
....++....
....\\..//
\\....>9\/
..\\..?0..
......++..
....\\....
......{0..

:%A
@0..
}0..
<A-A
{0@0

:Eg
}0}0}0}0}0}0}0}0
^7^6^5^4^3^2^1^0
~~....~~~~..~~~~
^0^0^0^0^0^0^0^0
{0{0{0{0{0{0{0{0

:Ehun
}0..}0
Eg..&0
=8&0{0
&1\/00
0100&0
&1&1{1
{1{0

:Addt
}0}1
{1{1

Будет ли печать двоичного кода короче?
SuperJedi224

3
(или как насчет одинарного?)
Дверная ручка

@ Doorknob отображает вывод не проблема. Это что-то на Ehunдоске, которое должно увеличивать следующую цифру, но не работает должным образом
TheDoctor

1
Знаете ли вы, что вы можете пропустить точки в конце каждой строки и пустые строки между досками и использовать одиночные символы для названий досок? Вы просто должны повторить этот единственный символ соответствующее количество времени, чтобы вызвать его. Это может уменьшить ваш ответ до 3000 байтов.
15:15

В конце концов я собираюсь отправить коммит в marbelous.py, который включает в себя все include/по умолчанию
Sparr

18

C (только 64-битная архитектура), 53 байта

Опирается на указатели размером не менее 64 бит и печатает их в шестнадцатеричном виде с использованием %pспецификатора. Программа вернется сразу, когда достигнет 2 ^ 128.

char*a,*b;main(){for(;++b||++a;)printf("%p%p ",a,b);}

1
Так что, если эти указатели на каждом 64-битном, вы могли бы рассчитывать только до 2 ^ 128-1, верно?
flawr

6
Неверно, так как не может сосчитать до 2 ^ 128
edc65

14
Мне нравится CodeGolf, когда речь идет о выражении и вознаграждении творчества. feersum явно не борется за победу здесь. Мне грустно видеть много отрицательных ответов по техническим вопросам и изменять формулировку вопроса, чтобы убедиться, что его ответ нарушен.
flodel

3
Я думал, что слова "по крайней мере, до 2 ^ 128" были достаточно ясны ...
vrwim

5
@vrwim Ты этого не писал. Вы написали "до 2 ^ 128". SuperJedi отредактировал его несколько минут назад.
feersum

17

Гексагония , 12 11 10 7 байт

Спасибо alephalpha за встраивание кода в длину стороны 2.

10})!';

Развернутая:

 1 0
} ) !
 ' ;

Это довольно просто. 10записывает 10, т.е. перевод строки на начальный край памяти. Затем })!';многократно выполняется в цикле:

  • } перейти к следующему краю памяти.
  • ) увеличить его.
  • ! выведите его как целое число
  • ' вернитесь к 10.
  • ; распечатать его как символ.

Я считаю, что это оптимально (хотя далеко не уникально). Я позволил сценарию грубой силы, который я написал для этого ответа, искать 6-байтовые решения в предположении, что он должен содержать хотя бы по одному на каждый из ;и !и либо (или ), или не будет содержать ?, ,или @, и он не найти любые решения.


13

Pyth, 4 байта

.V1b

Объяснение:

.V1    for b in range(1 to infinity):
   b      print b

f!\n( Ссылка TIO ) будет работать для 3 байтов, но не уверен, что он использует какие-либо функции, которые были добавлены после вашего ответа.
Сок

@ Сок Умный. Однако я не буду менять ответ, потому что думаю, что это fбыла особенность Pyth 4 года назад.
Якуб

Я тоже так думал, вот почему я оставил это в качестве комментария - новые языковые возможности, чтобы превзойти старый ответ, всегда чувствуют себя дешевыми ИМО
Сок

13

до н.э., 10

for(;;)++i

Необычно, что bcкороче dc.

От man bc:

ОПИСАНИЕ

bc - это язык, который поддерживает числа с произвольной точностью


Где это распечатать?
Белинт

@ Bálint ++iявляется выражением, но не присваиванием, и поэтому выводится явно. Вы пытались запустить его? echo 'for(;;)++i' | bcв вашем ближайшем терминале Linux.
Цифровая травма

У меня нет ни одного терминала Linux в моем доме. Мне просто было любопытно.
Bálint

6
@ Bálint В каждом доме должен быть терминал Linux.
Цифровая травма

1
@ Bálint Запуск этой программы - ваше использование;)
Безумный

12

Java 139 138 127 123 байта

class K{public static void main(String[]a){java.math.BigInteger b=null;for(b=b.ZERO;;)System.out.println(b=b.add(b.ONE));}}

2
Меньший бесконечный цикл в Java предназначен for(;;)для простых 3 байтов.
Анк-Морпорк

Вы также можете сохранить еще 2 с BigInteger b=null;b=b.ZERO;, к сожалению, =nullэто необходимо, даже если это статический доступ.
TWiStErRob

А потом еще 9, потому что вы можете избавиться от импорта, ссылаясь BigIntegerна FQCN только один раз.
TWiStErRob

@TWiStErRob Так или иначе, я не понял, что это будет короче.
SuperJedi224

2
Для Java 8 или новее вы можете заменить класс на interfaceи удалить publicиз функции. Не хочу копировать свой код и публиковать его как новый ответ.
Лука Х

10

Mathematica, 22 байта

i=0;While[Echo[++i]>0]

Echo это новая функция в Mathematica 10.3.


Echoдает четыре разделяющих символа: символ новой строки плюс ">> ". Не уверен, что это действительно - может быть, использовать Printвместо этого? Также сохраните байт с помощью i=0;While[Echo@++i>0].
Роман

7

Рубин, 15 12 байт

loop{p$.+=1}
  • pкогда задано целое число, печатает целое как есть (любезно предоставлено @philomory )
  • $.магическая переменная, содержащая количество строк, считанных из стандартного ввода. Он явно инициализируется 0, а также присваивается :)

@philomory Обычно пользователям предлагается оставить комментарий, предлагающий их решение для экономии байтов. Кроме того, я хотел бы увидеть объяснение этому. c:
Эддисон Крамп

7

Python 3, 33 25 байт

Насколько я понимаю, целые числа Pythons имеют произвольную точность и print()автоматически создают переводы строк.

Спасибо за @Jakub и @ Sp3000 и @wnnmaw! Я действительно не знаю много Python, единственное, что я знал, было то, что он поддерживает произвольные целые числа размера =)

k=1
while 1:print(k);k+=1

1является истинным значением в Python (и в большинстве других языков). Так while 1:что достаточно.
Якуб

Кроме того, вы можете поместить все whileв одну строку
Sp3000

Вы можете сохранить байт, используя repr(k)вместо print(k). Кроме того, я считаю ваш размер байта 25 (без предложенных изменений)
wnnmaw

1
Вы не можете использовать reprвместо print. reprничего не выводит. @wnnmaw
Зак Гейтс

Что reprже тогда?
flawr

6

Обработка , 95 85 71 байт

java.math.BigInteger i;{i=i.ZERO;}void draw(){println(i=i.add(i.ONE));}

Я пробовал что-то с циклом while, но это приводит к сбою всей обработки, так что я буду придерживаться этого пока.

(Спасибо @ SuperJedi224 и @TWiStErRob за предложения.)


Что с пробелами? Я уверен, import java.math.*;BigInteger i=BigInteger.ZERO;void draw(){println(i=i.add(BigInteger.ONE));}что сработает.
SuperJedi224

Да, просто исправил это.
геокавель

Позволяет ли обработка BigInteger.ONEизменять i.ONE?
SuperJedi224

@ SuperJedi224 Да, это так. Спасибо!
геокавель

Хорошо, есть голос.
SuperJedi224

6

Самау , 2 байта

N)

Объяснение:

N     push the infinite list [0 1 2 ...] onto the stack
 )    increase by 1

Когда вывод программы представляет собой список, крайние скобки опускаются.


Разве список не распечатывает все содержимое сразу? Если этот список бесконечен , то он не может поместиться в памяти или на вашем экране , и он никогда не прекратит генерироваться, поэтому он никогда не будет напечатан.
кот

1
@cat Samau написан на Хаскеле и ленив . Он не сгенерирует весь список перед его печатью.
алефальфа

Просто один на один. На странице GitHub для Samau, в описании @«push» есть ошибка.
Carcigenicate

@Carcigenicate Спасибо.
alephalpha

6

JavaScript (ES6), 99 94 67 байт

for(n=[i=0];;)(n[i]=-~n[i++]%10)&&alert([...n].reverse(i=0).join``)

alertявляется общепринятым STDOUTэквивалентом для JavaScript, но его использование означает, что последовательные числа автоматически разделяются. Я предположил, что вывод символа после числа не является необходимым из-за этого.


12
Вот почему у меня есть блокировщик всплывающих окон.
Коминтерн

1
просто говорю: for (i = 0 ;;) alert (i ++) Я не думаю, что вам нужны все эти элементы управления
towc

3
@towc Это не сработает. Все номера 64 бит поплавки в JavaScript , которые имеют максимальное безопасное целое значение , 2^53но вопрос требует , чтобы идти до 2^128.
user81655 30.12.15

1
о, справедливая точка ...
towc

5

Matlab, 132 байта

a=0;while 1;b=a==9;n=find(cumsum(b)-(1:numel(b)),1);a(n)=a(n)+1;a(1:n-1)=0;if ~numel(n);a=[0*a,1];end;disp([a(end:-1:1)+'0','']);end

Хорошо, я думаю, что это первый серьезный ответ, который выполняет эту задачу без тривиального встроенного целочисленного размера abitrary. Эта программа реализует целое число произвольного размера в виде массива целых чисел. Каждое целое число всегда находится в диапазоне от 0 до 9, поэтому каждый элемент массива представляет одну десятичную цифру. Размер массива будет увеличен на единицу, как только мы находимся, например 999. Размер памяти здесь не проблема, так как 2^128требуется только массив длиной 39.

a=0;
while 1
    b=a==9;
    %first number that is not maxed out
    n=find(cumsum(b)-(1:numel(b)),1);
    %increase that number, and sett all maxed out numbers to zero
    a(n)=a(n)+1; 
    a(1:n-1)=0;
    if ~numel(n) %if we maxed out all entries, add another digit
        a=[0*a,1];
    end    
    disp([a(end:-1:1)+'0',''])%print all digits
end

5

C ++, 146 141 138 байт

Использование стандартной библиотеки bigint, пожалуй, самый скучный способ ответить на этот вопрос, но кто-то должен был это сделать.

#include<stdio.h>
#include<boost/multiprecision/cpp_int.hpp>
int main(){for(boost::multiprecision::uint512_t i=1;;){printf("%u\n",i++);}}

Ungolfed:

#include<cstdio>
#include<boost/multiprecision/cpp_int.hpp>

int main()
{
    for(boost::multiprecision::uint512_t i=1;;)
    {
        std::printf("%u\n", i++);
    }
}

Причина, по которой используется stdio.hи не используется версия для гольфа, cstdioсостоит в том, чтобы не использовать std::пространство имен.

Это мой первый опыт игры в гольф на C ++, дайте мне знать, если есть какие-то хитрости, чтобы сократить это дальше.


Может быть, вы могли бы использовать '\n'вместо std::endl, сэкономит вам 8 байтов. Также может быть способ использовать CPP #define для сжатия некоторых повторений,
Кенни

@ Кенни Спасибо за это! (Это экономит только 5 байтов, а не 8.) Я думаю, что, возможно, я нашел способ настроить этот раздел еще короче.
Феликсфью

Я не знаю, что повысить (и я бы не сказал, что это стандарт), но по iумолчанию не создается значение 0? Затем вы можете удалить определение и переключить постинкремент на преинкремент, который спасет 2b
Zereges

Как насчет устаревших #import?
connectyourcharger

5

C # .NET 4.0, 111 103 102 97 байт

class C{static void Main(){System.Numerics.BigInteger b=1;for(;;)System.Console.WriteLine(b++);}}

Я не нашел никакого ответа C # здесь, поэтому мне просто нужно было написать один.

Требуется .NET 4.0, потому что это первая версия, включающая BigInteger . Вы должны ссылаться на System.Numerics.dll, хотя.

С отступом:

class C
{
    static void Main()
    {   
        System.Numerics.BigInteger b = 1;
        for (;;)
            System.Console.WriteLine(b++);
    }
}

Спасибо Sweerpotato, Kvam, Berend за сохранение некоторых байтов


Вы можете сохранить 8 байтов с помощью class C{static void Main(){var b=System.Numerics.BigInteger.One;for(;;)System.Console.WriteLine(b++);}}: ~)!
Sweerpotato

1
Переместите объявление b Console.WriteLineв структуру цикла:class C{static void Main(){for(var b=System.Numerics.BigInteger.One;;Console.WriteLine(b++));}}
Kvam

Вам все еще нужно System. Это сохраняет один байт, хотя!
Sweerpotato

Да, ты прав.
Квам

Если вы добавите using System; (13 байт), вы можете избавиться от System.(7 байт) дважды, сохранив 1 байт.
Кенни

5

Clojure, 17 байт

(map prn (range))

Ленивые последовательности и произвольные целые числа точности делают это легким (как для Haskell и CL). prnэкономит мне несколько байтов, так как мне не нужно печатать строку формата. doseqвероятно, будет более идиоматичным, поскольку здесь мы имеем дело только с побочными эффектами; mapне имеет большого смысла использовать, так как он создаст последовательность nil(которая является возвращаемым значением каждого prnвызова.

Предполагая, что я считаю всегда, последовательность нулевых указателей, которая возникает в результате этой операции, никогда не возвращается.


4

MarioLANG , 11 байт

+<
:"
>!
=#

Вдохновленный ответом Мартина Бюттнера на другой вопрос .


Вы уверены, что это работает без проблем до 2 ^ 128?
flawr


@flawr MarioLANG имеет интерпретатор Ruby, а целочисленный тип Ruby имеет произвольную точность.
Мартин Эндер

@flawr Это зависит от переводчика. Я использую интерпретатор, написанный на Ruby, и он поддерживает произвольную точность.
alephalpha

4

CJam, 7 байтов

0{)_p}h

Объяснение:

0         e# Push a zero to the stack
 {        e# Start a block
  )         e# Increment top of stack
   _        e# Duplicate top of stack
    p       e# Print top of stack
     }    e# End block
      h   e# Do-while loop that leaves the condition on the stack

Примечание. Необходимо использовать интерпретатор Java.


4

C 89 байтов

Новый подход (реализация побитового инкремента) в C:

b[999],c,i;main(){for(;;)for(i=c=0,puts(b);i++<998;)putchar(48+(c?b[i]:(b[i]=c=!b[i])));}

Меньше гольфа

int b[999], c, i;
main() {
  for(;;)
    for(i=c=0, puts(b); i++ < 998;)
      putchar(48 + (c ? b[i] : (b[i] = c = !b[i])));
}

прекратить

Эта версия имеет небольшой недостаток, заключающийся в том, что она не заканчивается (что на данный момент не является обязательным). Для этого вам нужно добавить 3 символа:

b[129],c=1,i;main(){for(;c;)for(i=c=0,puts(b);i++<128;)putchar(48+(c?b[i]:(b[i]=c=!b[i])));}

4
На самом деле это не должно прекращаться. В этом смыслforever
edc65


4

Минколанг , 4 байта

1+dN

Попробуй это здесь. (Ну, на самом деле, будьте осторожны. 3 секунд времени выполнения было достаточно, чтобы набрать ~ 40000.)

1+добавляет 1 к вершине стека, dдублирует его и Nвыводит вершину стека в виде целого числа с завершающим пробелом. Это происходит из-за того, что Минколанг тороидален, поэтому, когда счетчик программ выходит за пределы правого края, он снова появляется слева.


4

Сборка Intel 8086+, 19 байт

68 00 b8 1f b9 08 00 31 ff f9 83 15 00 47 47 e2 f9 eb f1

Вот разбивка:

68 00 b8                push   0xb800             # CGA video memory
1f                      pop    ds                 # data segment
b9 08 00           L1:  mov    cx, 8              # loop count
31 ff                   xor    di, di             # ds:di = address of number
f9                      stc                       # set carry
83 15 00           L2:  adc    word ptr [di], 0   # add with carry
47                      inc    di
47                      inc    di
e2 f9                   loop   L2
eb f1                   jmp    L1

Он выводит 128-битное число на верхних левых 8 позициях экрана. Каждая позиция экрана содержит 8-битный символ ASCII и два 4-битных цвета.

Примечание: оно оборачивается на 2 128 ; просто изменить 8в систему, mov cx, 8чтобы 9показать 144 битное число, или даже 80*25показать номера до 2 32000 .

Бег

1.44Mb сжатая bzip2, загрузочная дискета в кодировке base64

Создайте образ дискеты, вставив следующую копию

QlpoOTFBWSZTWX9j1uwALTNvecBAAgCgAACAAgAAQAgAQAAAEABgEEggKKAAVDKGgAaZBFSMJgQa
fPsBBBFMciogikZcWgKIIprHJDS9ZFh2kUZ3QgggEEh/i7kinChIP7HrdgA=

в эту командную строку:

base64 -d | bunzip2 > floppy.img

и работать, например, с qemu -fda floppy.img -boot a

1.8Mb загрузочный ISO

Это сжатый ISO-образ bzip2 в кодировке Base64. Генерация ISO путем вставки

QlpoOTFBWSZTWZxLYpUAAMN/2//fp/3WY/+oP//f4LvnjARo5AAQAGkAEBBKoijAApcDbNgWGgqa
mmyQPU0HqGCZDQB6mQ0wTQ0ZADQaAMmTaQBqekyEEwQaFA0AA0AxBoAAA9Q0GgNAGg40NDQ0A0Bi
BoDIAANNAA0AyAAABhFJNIJiPSmnpMQDJpp6nqeo0ZDQaAANB6IA0NAGj1EfIBbtMewRV0acjr8u
b8yz7cCM6gUUEbDKcCdYh4IIu9C6EIBehb8FVUgEtMIAuvACCiO7l2C0KFaFVABcpglEDCLmQqCA
LTCAQ5EgnwJLyfntUzNzcooggr6EnTje1SsFYLFNW/k+2BFABdH4c4vMy1et4ZjYii1FbDgpCcGl
mhZtl6zX+ky2GDOu3anJB0YtOv04YISUQ0JshGzAZ/3kORdb6BkTDZiYdBAoztZA1N3W0LJhITAI
2kSalUBQh60i3flrmBh7xv4TCMEHTIOM8lIurifMNJ2aXr0QUuLDvv6b9HkTQbKYVSohRPsTOGHi
isDdB+cODOsdh31Vy4bZL6mnTAVvQyMO08VoYYcRDC4nUaGGT7rpZy+J6ZxRb1b4lfdhtDmNwuzl
E3bZGU3JTdLNz1uEiRjud6oZ5kAwqwhYDok9xaVgf0m5jV4mmGcEagviVntDZOKGJeLjyY4ounyN
CWXXWpBPcwSfNOKm8yid4CuocONE1mNqbd1NtFQ9z9YLg2cSsGQV5G3EhhMXKLVC2c9qlqwLRlw4
8pp2QkMAMIhSZaSMS4hGb8Bgyrf4LMM5Su9ZnKoqELyQTaMAlqyQ3lzY7i6kjaGsHyAndc4iKVym
SEMxZGG8xOOOBmtNNiLOFECKHzEU2hJF7GERK8QuCekBUBdCCVx4SDO0x/vxSNk8gKrZg/o7UQ33
Fg0ad37mh/buZAbhiCIAeeDwUYjrZGV0GECBAr4QVYaP0PxP1TQZJjwT/EynlkfyKI6MWK/Gxf3H
V2MdlUQAWgx9z/i7kinChITiWxSo

в

base64 -d bunzip2 > cdrom.iso

и настроить виртуальную машину для загрузки с нее.

DOS .COM

Это исполняемый файл DOS .COM в кодировке base64 :

aAC4H7kIADH/+YMVAEdH4vnr8Q==

Создайте файл .COM, используя

/bin/echo -n aAC4H7kIADH/+YMVAEdH4vnr8Q== | base64 -d > COUNTUP.COM

и запустить его в (Free) DOS.


4

Perl , 34 32 30 28 26 23 байта

-Mbigint -E '{say$_+=1;redo}'

Тест с

perl -Mbigint -E '{say$_+=1;redo}'

Вы можете заменить for(,,){...}с {...;redo}на двоих.
Примо

Да, я видел (Perl 5.18+), но я подумал, что это может быть обманом; тогда ответы будут одинаковыми. Я новичок здесь, так ;-)
Кенни

1
Скалярные ссылки будут автоматически оживлены как SV UNDEF, что при увеличении не вызовет BigIntперегрузку - потому что это не a BigInt. Целочисленные литералы, однако, создаются как BigInts. Не так уж странно;)
primo

1
Не могли бы вы использовать, $-чтобы сохранить его как целое число и вернуться к использованию ++$-?
Дом Гастингс

1
@DomHastings, с которыми я тестировал, perl -Mbigint -E '{say++$-;$-+=$-;redo}' | moreи оборачивается до 1. Он остается целым, но bigint не вмешивается, к сожалению.
Кенни

4

Marbelous, 358 байт

..@F..@E..@D..@C..@B..@A..@9..@8..@7..@6..@5..@4..@3..@2..@1..@001@Z01
..AddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddo/\&I
00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I....@Z
@FHd@EHd@DHd@CHd@BHd@AHd@9Hd@8Hd@7Hd@6Hd@5Hd@4Hd@3Hd@2Hd@1Hd@0Hd
0A@N
..&I
@N/\..
:Hd
}0
Hp
}0
..
{<
#include hex_out.mbl
#include arithmetic.mbl

16 половинных сумматоров соединены вместе, причем самый правый из них выполняет N ++ каждый цикл, а каждый сумматор передает свой переполнение (00 или 01) следующему в цепочке. Вывод в шестнадцатеричном виде.

В интерпретаторе python есть ошибка, из-за которой теряется вывод из запомненных функций, поэтому вам нужно запустить его с «-m 0», чтобы он работал правильно. Без этого параметра вы можете видеть, как быстро он будет работать без ошибки, но вывод не будет работать правильно.

Примечание для себя: исправьте эту ошибку в marbelous.py Эта ошибка была исправлена ​​в последней версии marbelous.py


4

R, 52 байта

a=gmp::as.bigz(1);repeat{cat(paste(a,""));a=a+1}

(Примечание: gmpэто внешняя библиотека, поэтому вам может потребоваться загрузить ее, чтобы это решение работало)


1
+1 ... извините за все дополнения. Чтобы вернуть вам пару, вы можете попробовать a=gmp::as.bigz(0);repeat{cat(paste(a<-a+1,''))}. Вы можете сделать заметку о том, что gmpэто внешняя библиотека, которую, возможно, потребуется загрузить.
MickyT


4

BotEngine, 128 120 112 8x13 = 104

v2 2 01
>e>S SS
   e1e1
   e2 e0 12
   > > S SS P
  ^   <e0e1 R
     ^ < <lC^
^         <

Вывод в двоичном виде.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.