Відлічити назавжди


71

Напишіть програму, яка рахує назавжди, починаючи з однієї.

Правила:

  • Ваша програма повинна увійти до STDOUTприйнятної альтернативи, якщо STDOUTвона недоступна.
  • Ваша програма повинна бути повноцінною, запущеною програмою, а не функцією чи фрагментом.
  • Ваша програма повинна виводити кожне число з роздільним символом між ними (новий рядок, пробіл, вкладка або кома), але це повинно відповідати всім числам.
  • Ви можете друкувати цифри в десяткових, одинарних або в базових 256, де кожна цифра представлена ​​значенням байта .
  • Ваша програма повинна нараховувати щонайменше 2 128 (включно) без проблем і без втрати пам’яті на розумному настільному ПК. Зокрема, це означає, що якщо ви використовуєте одинарний режим, ви не можете зберігати одинарне представлення поточного номера в пам'яті.
  • На відміну від наших звичних правил, сміливо користуйтесь мовою (або мовною версією), навіть якщо вона є новішою, ніж ця проблема. Мови, спеціально написані для подання 0-байтової відповіді на це завдання, є чесною грою, але не особливо цікавою.

    Зауважте, що повинен бути перекладач, щоб подати заявку можна перевірити. Дозволяється (і навіть заохочується) писати цього перекладача самостійно для раніше не виконаної мови.

  • Йдеться не про пошук мови з найкоротшим рішенням для цього (є деякі, де порожня програма виконує трюк) - це про пошук найкоротшого рішення на кожній мові. Тому жодна відповідь не буде позначена як прийнята.

Каталог

Фрагмент стека внизу цієї публікації генерує каталог з відповідей а) як список найкоротших варіантів для кожної мови та б) як загальний таблиця лідерів.

Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:

## 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
Чи можемо ми мати провідні нулі у виході?
Paŭlo Ebermann

4
Тьфу !!! У мене є відповідь на TI-89 (56b), але я не можу публікувати b / c Я новачок на сайті та не маю Rep 10+!
gregsdennis

Відповіді:


63

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

):
\!

♫ IP-код у коді обходить і кружить ♫

Відповідні інструкції:

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

77
Програма сумна, що її не зупиняють ..
Optimizer

7
@Optimizer def сумно (справді):
YoYoYonnY

1
Чому це не 4 байти?
Аурел Білі

2
@ Aurel300 П'ятий байт - це новий рядок між :і\
Sp3000

@ Sp3000 Ага, так. Дурний мене. :)
Aurel Bílý

46

> <> , 8 байт

01+:nao!

Кроки:

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

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


66
+1 для нетерплячих вимог, що вимагають припущення, явно в рядку коду, який в основному звучить "плюс один, зараз!".
Jaus Bahs Jacquet

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 друкує результат, якщо ви вводите термін у repl, але це не програма, яку можна виконати. І так, ведучим теж [не дозволено.
Бергі

23

Гол> <> , 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 байтів.
спецодяг

Врешті-решт, я збираюся надіслати зобов’язання на 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 байт

Завдяки алефальфі за те, що він вписав код у бічну довжину 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 роки тому.
Якубе

Я теж подумав, тому я і залишив це як коментар - нові мовні функції, щоб перемогти старіші відповіді, завжди відчувають себе дешевим IMO
Sok

13

до н.е., 10

for(;;)++i

Незвичайне, що bcкоротше dc.

Від man bc:

ОПИС

bc - мова, яка підтримує довільні точні числа


Де це друкується?
Балінт

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

У мене немає жодного терміналу Linux в моєму будинку. Мені було просто цікаво.
Балінт

6
@ Bálint У кожному будинку повинен бути термінал Linux.
Цифрова травма

1
@ Bálint Запуск цієї програми - це ваше використання;)
Insane

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-х байт.
ankh-morpork

Ви також можете зберегти ще 2 з BigInteger b=null;b=b.ZERO;, на жаль =null, потрібні, навіть подумавши, що це статичний доступ.
TWiStErRob

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

@TWiStErRob Якось не зрозумів, що це буде коротше.
SuperJedi224

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

10

Математика, 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 )
  • $.являє собою магічну змінну, що містить кількість рядків, прочитаних з stdin. Очевидно, ініціалізовано до 0, а також призначається :)

@philomory Зазвичай користувачі пропонують залишити коментар, в якому пропонують рішення щодо збереження байтів. Також я хотів би побачити пояснення до цього. c:
Addison Crump

7

Пітон 3, 33 25 байт

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

Дякую за @Jakub та @ Sp3000 та @wnnmaw! Я дійсно не знаю багато python, я думав лише, що він підтримує довільний розмір цілих чисел =)

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

1являє собою значення truthy в Python (і в більшості інших мов). Так що while 1:достатньо.
Якубе

Крім того, ви можете поставити ціле whileна один рядок
Sp3000

Ви можете зберегти байт за допомогою, repr(k)а не print(k). Також я вважаю ваш розмір байтів 25 (без запропонованих змін)
wnnmaw

1
Не можна використовувати reprзамість print. reprнічого не виводить. @wnnmaw
Zach Gates

Що reprробити тоді?
flawr

6

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

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

Я спробував щось із циклом, але це спричиняє збій усієї обробки, тому я зараз дотримуюся цього.

(Спасибі @ SuperJedi224 та @TWiStErRob за пропозиції.)


Що з пробілами? Я майже впевнений import java.math.*;BigInteger i=BigInteger.ZERO;void draw(){println(i=i.add(BigInteger.ONE));}, що спрацює.
SuperJedi224

Так, це просто виправили.
geokavel

Чи дозволяє Обробка дозволяє BigInteger.ONEзмінити i.ONE?
SuperJedi224

@ SuperJedi224 Так, це так. Дякую!
geokavel

Гаразд, майте нагороду.
SuperJedi224

6

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

N)

Пояснення:

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

Коли висновок програми є списком, опускаються кращі дужки.


Чи список не друкує одразу весь його вміст? Якщо цей список нескінченний , він, можливо, не може вміститися ні в пам'яті, ні на екрані , і він ніколи не перестане створюватися, тому він ніколи не буде надрукований.
кіт

1
@cat Samau написаний на Haskell, і це ліниво . Він не генерує весь список перед його надрукуванням.
алефальфа

Просто голови вгору. На сторінці GitHub для Самау, в описі @"push" - неправильне написання .
Carcigenicate

@Carcigenicate Дякую
алефальфа

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.
користувач81655

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

5

Матлаб, 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

Гаразд, я думаю, що це перша серйозна відповідь, яка виконує це завдання без тривіального вбудованого цілого числа атрибутного розміру. Ця програма реалізує ціле число довільного розміру як масив цілих чисел. Кожне ціле число завжди знаходиться між 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++);}}

Безголівки:

#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 для стискання повторень,
Кенні

@Kenney Дякую за це! (Це економить лише 5 байтів, а не 8.) Я думаю, що, можливо, я придумав спосіб змінити цей розділ ще коротше.
felixphew

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

Як щодо застарілого #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++);
    }
}

Завдяки sweetpotato, Kvam, Berend за збереження деяких байтів


Ви можете зберегти 8 байт за допомогою class C{static void Main(){var b=System.Numerics.BigInteger.One;for(;;)System.Console.WriteLine(b++);}}: ~)!
підміта

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

Вам ще потрібно System. Це економить один байт!
латаття

Так, ти маєш рацію.
Квам

Якщо ви додасте 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, і він підтримує довільну точність.
алефальфа

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 секунди часу запуску вистачило на ~ 40 000.)

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, завантажена завантажувальна дискета

Створіть дискету, скопіювавши наступне

QlpoOTFBWSZTWX9j1uwALTNvecBAAgCgAACAAgAAQAgAQAAAEABgEEggKKAAVDKGgAaZBFSMJgQa
fPsBBBFMciogikZcWgKIIprHJDS9ZFh2kUZ3QgggEEh/i7kinChIP7HrdgA=

в цей командний рядок:

base64 -d | bunzip2 > floppy.img

і бігти, наприклад, qemu -fda floppy.img -boot a

1,8 Мб завантажувальний ISO

Це стиснене ISO-зображення bzip2, закодоване base64. Створіть ізо, вставивши

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 .COM, кодований base64 :

aAC4H7kIADH/+YMVAEdH4vnr8Q==

Створіть .COM файл за допомогою

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

і запустіть його у (безкоштовному) 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перевантаження - тому що це не BigInt. Цілі літерали, однак, створюються як BigInts. Не дуже дивно насправді;)
прим

1
Чи можете ви використати, $-щоб зберегти це як ціле число та повернутися до використання ++$-?
Дом Гастінгс

1
@DomHastings, з яким я тестував, perl -Mbigint -E '{say++$-;$-+=$-;redo}' | moreі обертається до 1. Він залишається int, але 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.