Найбільше число в десяти байтах коду


77

Ваша мета - надрукувати (до стандартного виводу) якомога більше число, використовуючи всього десять символів коду.

  • Ви можете використовувати будь-які функції своєї мови, крім вбудованих функцій експоненції.
    • Так само ви не можете використовувати наукові позначення для введення числа. (Таким чином, ні 9e+99.)
  • Програма повинна надрукувати номер без будь-якого введення користувачем. Аналогічно, жодне читання з інших файлів чи з Інтернету тощо.
  • Ваша програма повинна обчислити єдине число та роздрукувати його. Ви не можете надрукувати рядок, а також не можете надрукувати одну і ту ж цифру тисячі разів.
  • Ви можете виключити з обмеження 10 символів будь-який код, необхідний для друку будь-чого. Наприклад, у Python 2, який використовує print xсинтаксис, ви можете використовувати до 16 символів для вашої програми.
  • Програма повинна насправді досягти успіху у виході. Якщо на найшвидшому в світі комп'ютері працює більше години, він недійсний.
  • Вихід може бути в будь-якому форматі (так що ви можете роздрукувати 999, 5e+100і т.д.)
  • Нескінченність - це абстрактне поняття , а не число. Тож це невірний вихід.


21
Що ви точно маєте на увазі під «обчислити». Також If it takes longer than an hour to run on any computer in the world, it's invalid.не є об'єктивним. Я міг би (теоретично) виготовити комп’ютер, який потребує години, щоб змінити один стан T
user80551

4
Чи розрахований бітовий зсув як оператор експоненції, оскільки він еквівалентний * 2^x?
Клавдіу

14
Той факт, що обмеження часу залежить від продуктивності найшвидшого комп’ютера у світі, не дає змоги визначити набір правильних відповідей ... Мені це не дуже подобається
David Z

6
Функції експоненції не дозволені, але функція ackermann дозволена? Це здається дійсно довільним. Залишається незрозумілим, чому символічну маніпуляцію вважають "обчисленням" кількості.
WolframH

Відповіді:


26

Вольфрамська мова

ack(9!,9!)

ак (9!, 9!) =enter image description here

Вихід є в позначенні стрілки.


3
@KyleKanos Це відрізняється тим, що код / ​​програма не дзвонить в Інтернет. Інші приклади typescriptlang.org/Playground tryfsharp.org/Learn/getting-started
Адам Спейт

35
Мова Wolfram доступна для використання Raspberry Pi і не вимагає доступу до Інтернету. Тож це не є порушенням цього правила.
Адам Speight

6
Я думаю, що це дуже вагома відповідь. Дурні міркування про перебування на острові та відсутність доступу до Інтернету. Вимога "немає Інтернету" полягає лише у запобіганні друку виходу з уже доступного ресурсу. Усі відповіді дійсні до тих пір, поки вони 'запускають' фрагмент коду для обчислення результату. Приходить остання Visual Studio, яка запускає ваш код на хмарі Azure, тому ви хочете обмежити C #? Або ви не маєте права, якщо у вас є хромбук?
мікробій

26
ack(99!,9)набагато, набагато більше.
jimmy23013

11
В одній з інших відповідей сказано, що ак (4,2) - найбільший, який він може обчислити за годину, тому я був би здивований, якби це зробив ...
Джеррі Єремія

120

Perl,> 1.96835797883262e + 18

time*time

Можливо, це не найбільша відповідь ... сьогодні! Але чекайте достатньо тисячоліть, і це буде!


Редагувати:

Для вирішення деяких коментарів "достатньо тисячоліть" я фактично маю на увазі п ять років.

Якщо чесно, якщо велика замерзання / теплова смерть Всесвіту закінчиться (за оцінками, відбудеться ~ 10 100 років), "остаточне" значення складе ~ 10 214 , що, безумовно, набагато менше, ніж деякі інші відповіді (хоча "випадкові квантові коливання або квантове тунелювання можуть призвести до іншого Великого вибуху за 10 10 56 років"). Якщо ми скористаємося більш оптимістичним підходом (наприклад, циклічною або мультиверсійною моделлю), то час триватиме нескінченно, і тому якийсь день у якомусь Всесвіті, в якійсь бітовій архітектурі відповідь перевищить деякі інші.

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

Це була не найсерйозніша відповідь, але, сподіваюся, вам сподобалось!


23
Оновлено, тому що мені подобається подія
Тім

5
Ви не timeзможете обернутися і повернути невелику кількість в якийсь момент? Залежить від того, 32-розрядний чи 64-розрядний perl, я здогадуюсь
Клавдіу

3
1000 років ~ 3e10 секунд, тож ви все ще будете коливатися навколо 1e21 як вихід. Можливо, якщо ви чекали 50 років, ви можете почати конкурувати проти інших відповідей?
Кайл Канос

8
Ви вимовляєте це "час часу"? :-) (привіт Тімві!)
П'єр Арло

1
Чи час для смертного тепла у Всесвіті враховує економію денного світла? Ви могли заробити ще кілька секунд свого існування.
Альфа

65

Вольфрам ≅ 2.003529930 × 10 19728

Так, це мова! Він рухає задній план популярного сайту Wolfram Alpha. Це єдина мова, яку я знайшов, де функція Ackermann вбудована і скорочена до 6 символів.

У восьми символах:

$ ack(4,2)

200352993...719156733

Або ≅ 2,003529930 × 10 19728 року

ack(4,3)і ack(5,2)т. д. набагато більше, але занадто великі. ack(4,2)це, мабуть, найбільше число Акермана, ніж його можна повністю обчислити за менше години.

Більші числа відображаються у символічній формі, наприклад:

$ ack(4,3)

2↑²6 - 3 // using Knuth's up-arrow notation

Правила кажуть, що будь-який вихідний формат дозволений, тому це може бути дійсним. Це більше, ніж 10 10 19727 року , що більше, ніж будь-який з інших записів тут, за винятком повторних факторіалів.

Однак,

$ ack(9,9)

2↑⁷12 - 3

більший за повторний факторіал. Найбільша кількість я можу отримати в десять символів:

$ ack(99,99)

2↑⁹⁷102 - 3

Це шалено величезне значення, Всесвіт недостатньо велика, щоб представляти значну частину його цифр, навіть якщо ви брали повторні журнали числа.


85
Непогано, але це не відповідає моєму ack(4,2)+1рішенню.
user19057

13
ack (4,2) +2, I WIN

1
Я думаю, ви перемогли.
Анонім Пі

20
@Kyle, Yimin У цій публікації та коментарях під нею є багато оманливих тверджень. Це не мова Вольфрама, а не те, що використовується як доповнення W | A. Це просто "природна мова" вхід до Wolfram | Alpha. У мові Wolfram ack(4,2)невірна інформація. W | A природного введення мови навіть не слід вважати мовою програмування. Він не є Тюрінгом завершеним, і ви не можете написати в ньому навіть базові програми, такі як алгоритм Евкліда. З цієї причини я не вважаю, що це правильна відповідь, ніж на запит Google.
Szabolcs

4
Мова Wolfram - мова програмування, що використовується в Mathematica, задокументована тут . Wolfram | Альфа приймає природну мову як вхідну, а не Вольфрамську мову.
Szabolcs

30

Оболонка Python2, 3,010,301 цифр

9<<9999999

Обчислення довжини: Python додасть "L" до цих довгих чисел, тож він повідомляє на 1 символ більше, ніж результат має цифри.

>>> len(repr( 9<<9999999 ))
3010302

Перша та остання 20 цифр:

40724177878623601356... ...96980669011241992192

2
Палки! Це виявилось, поки я писав ту саму відповідь
James_pic

2
Це справді просто 9 * 2**9999999, тому можна стверджувати, що він використовує експоненцію.
Денніс

2
Зачекайте, ***built-in*** exponentiation functionsне дозволено, щоб це могло прослизнути за правилами. +1
користувач80551

1
Математичний спосіб обчислення довжини:floor(log10(9 * 2**9999999))+1
Джастін

8
9 << (9 << 99) значно більший, якщо він припиняється.
Кіт Рендалл

29

CJam, 2 × 10 268,435,457

A28{_*}*K*

Це обчислює b , визначені наступним чином:

  • a 0 = 10

  • a n = a n - 1 2

  • b = 20 × a 28

$ time cjam <(echo 'A28{_*}*K*') | wc -c
Real    2573.28
User    2638.07
Sys     9.46
268435458

Фон

Це випливає з тієї ж ідеї, що і у відповіді Клавдіу , але вона не ґрунтується на ній. У мене була подібна ідея, яку я опублікував лише через кілька хвилин після того, як він опублікував свою , але я відкинув її, оскільки вона не дійшла ніде поблизу часового обмеження.

Однак пропозиція aditsu перейти на Java 8 та моя ідея використання повноважень 10 дозволили CJam обчислювати числа за межами досяжності GolfScript, що, мабуть, пояснюється деякими помилками / обмеженнями Bubum Ruby.

Як це працює

A    " Push 10.                                                          ";
28{  " Do the following 28 times:                                        ";
  _* " Duplicate the integer on the stack and multiply it with its copy. ";
}*   "                                                                   ";
K*   " Multiply the result by 20.                                        ";

CJam, ≈ 8,1 × 10 1,826,751

KK,{)*_*}/

На моїй машині займає менше п'яти хвилин, тому вдосконалення ще є.

Це обчислює значення 20 , яке визначається наступним чином:

  • a 0 = 20

  • a n = (n × a n - 1 ) 2

Як це працює

KK,   " Push 20 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ]. ";
{     " For each integer in the array:                                 ";
  )*  " Increment it and compute the its product with the accumulator. ";
  _*  " Multiply the result with itself.                               ";
}/

21
Ха-ха, це Кірбі? :)
aditsu

Не могли б ви описати, що це робить?
Кайл Канос

2
FYI, я провів кілька тестів, щоб перевірити продуктивність BigInteger - я підрахував 100000! і перетворено на рядок. Результати: java 6: 21 сек розрахунок, 44 сек до стрингу; java 7: розрахунок 14 сек, 42 сек до стрингу; java 8: 5 сек розрахунок, 1 сек доСтринг!
aditsu

1
@aditsu: Оновлення Java скоротило час виконання з 5 хвилин до 2 секунд!
Денніс

20

Пітон 3, 9 * 2 ^ (7 * 2 ^ 33)> 10 ^ 18,100,795,813

9 * 2 ^ (2 ^ 35)> 10 ^ 10,343,311,894

Редагувати: моя нова відповідь:

9<<(7<<33)

Стара відповідь, для нащадків:

9<<(1<<35)

Десять символів рівно.

Я друкую число в шістнадцятковій кількості, і

Ви можете виключити з обмеження 10 символів будь-який код, необхідний для друку будь-чого. Наприклад, у Python 2, який використовує синтаксис print x, ви можете використовувати до 16 символів для вашої програми.

Тому мій фактичний код:

print(hex(9<<(7<<33)))

Доказ того, що він працює у вказаний час та генерує кількість вказаного розміру:

time python bignum.py > bignumoutput.py

real    10m6.606s
user    1m19.183s
sys    0m59.171s
wc -c bignumoutput.py 
15032385541 bignumoutput.py

Мій номер> 10 ^ (15032385538 * журнал (16))> 10 ^ 18100795813

На 3 менші шістнадцяткові цифри, ніж вищевказаний розряд wc через початкові 0x9 .

Python 3 необхідний, тому що в python 2 7<<33було б довгим, а<< не вимагає довгих в якості вхідних даних.

Я не можу використовувати натомість 9 << (1 << 36), тому що:

Traceback (most recent call last):
  File "bignum.py", line 1, in <module>
    print(hex(9<<(1<<36)))
MemoryError

Таким чином, це максимально можлива кількість форми a<<(b<<cd) друку на моєму комп’ютері.

Напевно, найшвидша машина світу має більше пам’яті, ніж я, тому моя альтернативна відповідь:

9<<(9<<99)

9 * 2 ^ (9 * 2 ^ 99)> 10 ^ (1.7172038461 * 10 ^ 30)

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


На сьогодні це, мабуть, є найбільшою відповіддю. Адже це 10 000 000 000 цифр зрештою.
nneonneo

1
@nneonneo: Я вважаю, що моє рішення більше :)
Zaid

Ваш альтернативний відповідь вимагає juuuuust менше 1 MiYiB пам'яті, і вимагає 100 біт пам'яті, що адресується (так що не працюватиме до тих пір , по крайней мере , 128-бітний Python). (Джерело: моя схожа відповідь )
wizzwizz4

19

Будь-яка мова з досить короткими постійними іменами, 18 цифр прибл.

99/sin(PI)

Я б опублікував це як відповідь PHP, але, на жаль, M_PIце робиться трохи занадто довго! Але PHP дає 8.0839634798317E + 17 для цього. В основному, він зловживає відсутністю абсолютної точності в PI: p


1
Ви не можете засмагнути (PI / 2)?
користувач80551

1
@ user80551 Можливо, але я помітив, що я міг використати останній символ, що залишився в межах, щоб збільшити результат у 99 разів.
Niet the Dark Absol

Занадто довго в Common Lisp: (/ 99(sin pi))(14 символів). Помилка в TI-83: 99/sin(π(8 символів) призводить до поділу на нуль. Працює в LibreOffice Calc : =99/SIN(PI((10 символів, не рахуючи =) обчислює 808423047055000000. LibreOffice автоматично вставляє останні два ))дюйма =99/SIN(PI()).
kernigh

Це залежить від точності мови. У PHP 14 десяткових цифр - загальне значення.
kenorb

@kernigh Це не має значення в цьому випадку, але це було 99/sin(πб п'ять байт чи вісім? Я знаю, що TI-BASIC зберігає купу команд як одиночні байти; це sin(один з них?
wchargin

16

Хаскелл

Без жодних хитрощів:

main = print -- Necessary to print anything
    $9999*9999 -- 999890001

Можливо, не рахуючи нічого:

main = print
    $floor$1/0 -- 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216

Адаптація відповіді Ніта :

main = print
    $99/sin pi -- 8.083963479831708e17

Третя куля говорить "Ваша програма повинна прорахувати ..."
користувач80551

8
floor(infinity)є кінцевим числом? Що за чорт Хаскелл?
nneonneo

3
1/0! = Нескінченність, це не визначено.
RubberDuck

1
Ви впевнені в цьому, @ ckuhn203? І в GHC 7.6.3 і 7.8.2 я отримую isInfinite $ 1 / 0 -- True. Наскільки я можу сказати, IEEE 754 визначає 1 / 0 як нескінченність.
Тейлор Фаусак

2
О, ти маєш на увазі математично. Я згоден повністю. Але наскільки програмування з IEEE з плаваючою точкою (і Haskell , зокрема) , то, 1 / 0 == Infinity.
Тейлор Фаусак

15

Powershell - 1.12947668480335E + 42

99PB*9E9PB

Помножує 99 пебібайт разів 9 000 000 000 пебібайт.


7
98901 кв. Петабайт? Це якийсь метод вимірювання поверхневої щільності бітів (майбутніх потужних) жорстких дисків?
користувач80551

О, гарно. Наразі не знали пебібайт. Я завжди думав, що це зупинилося на тебібайтах.
Joey

@Joey Тепер, якщо MS тільки поспішить і додасть йобібайти, відповідь могла бути ще кращою.
Рінант

1
Я можу додати це до Паші, якщо це допоможе ... ;-)
Джої,

1+ "1" * 309 виводить 1.1111e308, хоча, гадаю, це порушує дух, якщо не слово правила щодо друку символів. Це виводиться в подвійний для виведення.
tomkandy

14

J (((((((((9)!)!)!)!)!)!)!)! )

Так, це дуже багато. 10^(10^(10^(10^(10^(10^(10^(10^6.269498812196425)))))))бути не дуже точним.

!!!!!!!!9x

5
Я знайшов компілятор , але через 20 хвилин !!9xнічого не надрукував на екрані. Я щиро сумніваюся , що !!!!!!!!9xбуде коли - або , можливо вирахувано.
Кайл Канос

16
"Якщо на найшвидшому комп’ютері в світі потрібно більше години, це недійсно." Не впевнений, що це буде дійсно, оскільки воно не працює протягом години
Клавдіу

11
Минуло 70 хвилин, але !!9xнарешті було надруковано на екран. Мені вражено, що воно фактично обчислило значення, але воно все ще повністю провалює кулю 5.
Кайл Канос

6
@Quincunx: Мабуть, правда, проте умовою правильної відповіді є те, що програма повинна досягти успіху у виведенні; ця відповідь повністю не відповідає цьому критерію. На жаль, опозиціонери знехтували усіма коментарями, що вказують на це, і все ще піднімають його за відповіді CJam & Golfscript, які є надзвичайно величезними і обчислюються в розумні терміни.
Кайл Канос

3
Незважаючи на те, що відповідь не роздруковується.
isaacg

14

К / Кона : 8.977649e261 1.774896e308

*/1.6+!170
  • !170 створює вектор чисел від 0 до 169
  • 1.6+ додає по одному елементу вектора і перетворює на реалі (діапазон від 1,6 до 170,6)
  • */ множує кожен елемент масиву разом

Якби Кона підтримував квадратичну точність, я міг би зробити */9.+!999 і обійти 1e2584. На жаль, це не так, і я обмежений подвійною точністю.


старий метод

*/9.*9+!99
  • !99 створює вектор чисел від 0 до 98
  • 9+ додає 9 до кожного елемента вектора (зараз становить від 9 до 107)
  • 9.* помножує кожен елемент на 9,0 (неявно перетворюється на реальні значення, тому 81,0 - 963,0)
  • */ множує кожен елемент вектора разом

14

HTML, 9999999999

9999999999

.. прибила його.


1
не мова програмування, хоча.
кіт

1
Використовуйте PHP, краще!
CalculatorFeline

@cat У цьому випадку це добре, оскільки це нагадує проблеми складності колмогорів.
Аддісон Кримп

9&Hat;9999відбитки 9^9999. Just sayin :)
січня

1
сумно PHP_INT_MAX- 11
ArtisticPhoenix

11

Python - варіюється, до 13916486568675240 (поки що)

Не зовсім серйозно, але я подумав, що це буде якось весело.

print id(len)*99

З усіх речей, які я намагався, lenнайбільш послідовно отримували мені великі ідентифікатори.

На моєму комп’ютері отримано 13916486568675240 (17 цифр) та 13842722750490216 (також 17 цифр) на цьому веб-сайті . Я гадаю, що це може призвести до 0, але це також може вийти вище.


Чудова ідея, але, на жаль, вона нічого не дає calculate.
користувач80551

3
Я вірю, що *99частина посилається на розрахунок.
командос

О так, / мені зараз дурно.
користувач80551

1
Якщо ви використовуєте щось коротше - скажімо, id(id)або id(0j), ви можете помножити його на999
gnibbler

1
З менших названих в них docs.python.org/2/library/functions.html , varsпослідовно дає найвище значення (але 4 символів) , а потім sum. Використовуйте print(sorted([(id(x),x)for x in[id,len,max,min,str,int,ord,chr,sum,map,abs,all,any,bin,bool,eval,oct,vars,iter,list,set,repr,round,zip,type,pow,dict,dir,hex]])[::-1])для перевірки.
user80551

10

Гольфскрипт, 1е + 33,554,432

10{.*}25*

Обчислення 10 ^ (2 ^ 25), не використовуючи експонентів, працює за 96 секунд:

$ time echo "10{.*}25*" | ruby golfscript.rb  > BIG10

real    1m36.733s
user    1m28.101s
sys     0m6.632s
$ wc -c BIG10
 33554434 BIG10
$ head -c 80 BIG10
10000000000000000000000000000000000000000000000000000000000000000000000000000000
$ tail -c 80 BIG10
0000000000000000000000000000000000000000000000000000000000000000000000000000000

Він може обчислити 9 ^ (2 ^ 9999), якщо тільки дано достатньо часу, але збільшення внутрішнього показника на одне змушує зайняти ~ втричі більше часу, тому обмеження на одну годину буде досягнуто досить скоро.

Пояснення :

Використання попередньої версії з тією ж ідеєю:

8{.*}25*

Розбийте його:

8         # push 8 to the stack
{...}25*  # run the given block 25 times

Стек на початку кожного блоку складається з одного числа, поточного числа. Це починається як 8. Тоді:

.         # duplicate the top of the stack, stack is now | 8 | 8 |
*         # multiply top two numbers, stack is now       | 64 |

Отже, стек, крок за кроком, виглядає так:

8
8 8
64
64 64
4096
4096 4096
16777216
16777216 16777216

... і т.д. Записане в математичній нотації прогресія:

n=0, 8                     = 8^1  = 8^(2^0)
n=1, 8*8                   = 8^2  = 8^(2^1)
n=2, (8^2)*(8^2) = (8^2)^2 = 8^4  = 8^(2^2)
n=3,               (8^4)^2 = 8^8  = 8^(2^3)
n=4,               (8^8)^2 = 8^16 = 8^(2^4)

Яка угода з двома перед 2564 у вашому виході?
Кайл Канос

@KyleKanos: Це не мій результат, це вихід wc. Я відредагую, щоб було зрозуміліше
Клавдіу

ви можете використати wc -cдля того, щоб зробити результат більш чітким
daniero

Приємно! У мене була така ж ідея кілька хвилин тому, але вона працює набагато повільніше з CJam (що дивно, оскільки вона швидша, ніж GolfScript взагалі).
Денніс

1
Незначне покращення: 10{.*}25на моїй машині подається 33 554 444 цифр і закінчується за 90 секунд. Не знаю чому, але 10{.*}26*нічого не друкує.
Денніс

7

wxMaxima ~ 3x10 49,948 (або 10 8,565,705,514 )

999*13511!

Вихід є

269146071053904674084357808139[49888 digits]000000000000000000000000000000

Не впевнений, що він цілком відповідає специфікаціям (особливо формат вихідного), але я можу вдарити ще більше:

bfloat(99999999!)

Вихід є

9.9046265792229937372808210723818b8565705513

Це приблизно 10 855 705 554, що значно більше, ніж більшість найкращих відповідей, і було обчислено приблизно за 2 секунди. bfloatФункція дає довільну точність .


6

Хаскелл, 4950

Aww man, це не багато! 10 символів починаються після знака долара.

main=putStr.show$sum[1..99]

Чому б не просто print? Також 9/0.000001більше, ніж sum[1..99].
Тейлор Фаусак

5
У такому темпі ми можемо вважати 9 999 999 999 нижньою межею результатів.
Кін

@TaylorFausak Цю відповідь, очевидно, не слід сприймати серйозно!
Флонк

6

Mathematica, 2.174188391646043 * 10 ^ 20686623745

$MaxNumber

Десять символів рівно.


7
Це технічно обчислює що-небудь, і чи виводить усі цифри, а не лише наукові позначення?

@Yimin: Вихід може бути у будь-якому форматі (тому ви можете надрукувати 999, 5e + 100 тощо)
edc65

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

5

Оболонка Python, 649539 999890001

Удар Haskell, насправді не серйозна відповідь.

99999*9999

6
9999999999 більше, чи не так?
MadTux

5
@MadTux У відповіді є неоднозначне обмеження calculate.
користувач80551

1
Якщо ця відповідь правильна, то і моя 9**9**9**9правильна, оскільки це арифметичний оператор (не вбудований функц).
kenorb

3
@kenorb Це побудовано в експоненції, яке не дозволено.
користувач80551

5

Wolfram Alpha (чи веб-сайт вважається мовою)?

9! ! ! ! !

виходи

10^(10^(10^(10^(10^(6.27...))))

завдяки Корі за підказку, що простори працюють, а також парен.


Я впевнений, що це найбільше число в потоці за моїм повідомленням, але Вольфрам задихається від порівняння його з іншими номерами, навіть ((99!)!)! > 4ніколи не повертається.
gggg

Це суперечить правилу, яке говорить, що ви не можете отримати його з Інтернету.
Кайл Канос

1
Занадто багато W | A!
Анонім Пі Пі

5
Я не згоден, що це порушує правила. Він не "читає його з Інтернету", що суперечить правилам, а насправді "обчислює єдине число та роздруковує його", що саме має робити. Те, що єдиним доступним інтерфейсом є веб-сайт, не означає, що він не може вважатися мовою програмування.
gggg

1
Це цілком коректна відповідь.
мікробій

4

Befunge-93 (1,853,020,188,851,841)

Радий, що ще ніхто не зробив Befunge (це моя ніша), але чорт забираю, що не можу знайти жодної хитрої хитрості, щоб збільшити кількість.

9:*:*:*:*.

Так це 9 ^ 16.

:*

В основному множує значення вгорі стека на себе. Отже, значення у верхній частині стека іде:

9
81
6561
43046721
1853020188851841

і

.

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



4

Я б краще розмістити це як коментар вище, але, мабуть, не можу, оскільки я ноб.

Пітон:

9<<(2<<29)

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

9<<(7<<27)

Єдина проблема з цим полягає в тому, що вони можуть не задовольняти правило 5.


3

Матлаб (1.7977е + 308)

Matlab зберігає значення найбільшого (подвійної точності) числа з плаваючою комою у змінній, що називається realmax. Викликаючи його у вікні команд (або в командному рядку), виводиться його значення:

>> realmax

ans =

  1.7977e+308

Оскільки ОП попросило повернути обчислене значення, слід поставити realmax+1. Я спробував це для розваги і здивував, що він повертає точно стільки ж, скільки ви (тоді я сміявся, коли зрозумів ... eps(realmax)=1.99584030953472e+292).
Хокі

3

Пітон, бл. 1,26е1388

9<<(9<<9L)

Дає:

126026689735396303510997749074166929355794746000200933374690887068497279540873057344588851620847941756785436041299246554387020554314993586209922882758661017328592694996553929727854519472712351667110666886882465827559219102188617052626543482184096111723688960246772278895906137468458526847698371976335253039032584064081316325315024075215490091797774136739726784527496550151562519394683964055278594282441271759517280448036277054137000457520739972045586784011500204742714066662771580606558510783929300569401828194357569630085253502717648498118383356859371345327180116960300442655802073660515692068448059163472438726337412639721611668963365329274524683795898803515844109273846119396045513151325096835254352967440214290024900894106148249792936857620252669314267990625341054382109413982209048217613474462366099211988610838771890047771108303025697073942786800963584597671865634957073868371020540520001351340594968828107972114104065730887195267530118107925564666923847891177478488560095588773415349153603883278280369727904581288187557648454461776700257309873313090202541988023337650601111667962042284633452143391122583377206859791047448706336804001357517229485133041918063698840034398827807588137953763403631303885997729562636716061913967514574759718572657335136386433456038688663246414030999145140712475929114601257259572549175515657577056590262761777844800736563321827756835035190363747258466304L3763403631303885997729562636716061913967514574759718572657335136386433456038688663246414030999145140712475929114601257259572549175515657577056590262761777844800736563321827756835035190363747258466304L3763403631303885997729562636716061913967514574759718572657335136386433456038688663246414030999145140712475929114601257259572549175515657577056590262761777844800736563321827756835035190363747258466304L


3

Принаймні Python 3.5.0 (64-розрядна), більше 10 ^ 242944768872896860

print("{:x}".format( 9<<(7<<60) ))

В ідеальному світі це було б 9<<(1<<63)-1, але для цього недостатньо байтів. Це число настільки велике, що для його утримання потрібно майже 1 ЕБ пам'яті, що трохи більше, ніж у мене на комп’ютері. На щастя, вам потрібно використовувати лише 0,2% світового простору для зберігання, щоб утримувати його. Значення у двійковій 1001формі супроводжується 8070450532247928832 нулями.

Якщо Python вийде для 128-розрядних машин, максимум буде 9<<(9<<99), на що потрібно менше 1 МіГБ пам'яті. Це добре, тому що у вас буде достатньо адресного місця для зберігання інтерпретатора Python та операційної системи.


"Лише 0,2% світового простору"
Бенджамін Уркхарт

1
@BenjaminUrquhart Якщо ти вважаєш, що це добре, чому б не виголосити пропозицію?
wizzwizz4

Там ваш подвійний результат;)
Бенджамін Уркхарт

3

Cubix , 9.670457478596419e + 147 (не конкурує)

****"///**

Неконкурентований, тому що Cubix є новішим, ніж ця проблема. Ви можете перевірити його тут , але зауважте, що він насправді не друкує номер; Вам доведеться призупинити програму після *запуску двох останніх s, щоб побачити значення на стеку.

Як це працює

Cubix - двовимірний езоланг, де код обмотується навколо куба. Цей код точно еквівалентний наступній кубічній сітці, де .немає опціону:

    * *
    * *
" / / / * * . .
. . . . . . . .
    . .
    . .

Потім запускається код, при цьому вказівник інструкції (IP) починається з верхнього лівого кута крайньої лівої частини обличчя, зверненого праворуч. "вмикає рядовий режим, де всі зустрічаються символи до наступного "натискають свої char-коди на стек IP обертається навколо коду, натискаючи три /s (47), два *s (42) та два. s (46), перш ніж знову вийти з рядкового режиму.

Ось де це стає цікавим. Перше дзеркало /відображає IP, тому воно звернене вгору; Потім він обертається навколо куба, вражаючи ці знаки:

           
    * *
  /     *      
  .     .      
    . .

На три *s помножте два найкращих пункти на стеку. Тепер, на відміну від більшості мов на основі стека, де арифметичні оператори висувають свої аргументи, Cubix залишає попередні значення у стеку. Отже, це означає, що це обчислює46*46 = 2116, 46*2116 = 97336, 2116*97336 = 205962976 .

Коли IP /знову досягається , він повертається праворуч. Потім він потрапляє на наступне дзеркало і йде цим шляхом:

    *  
    *  
    /         .
    .         .
    .  
    .  

Дві зірочки ще раз помножують два найкращі елементи. Потім дзеркало знову спрямовує IP-адресу, а третє дзеркало повторює процес ще раз:

      *
      *
      /     .  
      .     .  
      .
      .

Нарешті, IP залишає дзеркальну секцію, що прямує на схід. Дві остаточні зірочки множимо ще два рази, залишаючи результат 9,670457478596419e + 147 на стеку. Це можна було б надрукувати O, але немає простого способу зробити це, оскільки практично кожна пляма на кубі вже використовується.


2

Скала, 2 63 -1

Бідна, бідна Скала. Для отримання символу потрібно щонайменше 8 символівBigInt значення, що не залишає достатньо місця, щоб насправді зробити його великим.

Але, маючи лише 7 символів (рахується) коду, ми можемо надрукувати найбільший можливий позитив Long:

print(-1L>>>1)

2

Brainf ** k 256 - 2147483647

>+[<+>+]<.

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

Для деяких систем це лише 256, хоча для деяких (наприклад, моя) це максимальне значення 32-бітного цілого числа, тобто 2 147 483 647.

Редагувати:

-.

Буде надруковано те саме, що набагато менше символів


Ця друга відповідь буде надрукована -1на перекладачів, які використовують підписані значення для стрічки
Бенджамін Уркхарт

2

Perl, не конкуруючий

Я використовую це, щоб виділити трохи відомий куточок perl.

Perl не може реально конкурувати на цьому, тому що він не має вбудованих bignums (звичайно, ви можете завантажити бібліотеку bignum).

Але те, що всі знають, не зовсім правда. Одна основна функція насправді може працювати з великими числами.

packФормат wфактично може перетворити будь-який розмір натурального числа між підставою 10і основою 128. Однак ціле ціле число 128 представлено у вигляді рядкових байтів. Бітові рядки xxxxxxxyyyyyyyzzzzzzzстають байтами: 1xxxxxxx 1yyyyyyy 0zzzzzzz(кожен байт починається з 1, крім останнього). І ви можете перетворити таку рядок у базу 10 за допомогою розпакування. Таким чином, ви можете написати код на зразок:

unpack w,~A x 4**4 .A

що дає:

17440148077784539048602210552864286760481312243331966651657423831944908597692986131110771184688683631223604950868378426010091037391551287028966465246275171764867964902846884403624214574779667949236313638077978794791039372380746518407204456880869394123452212674801443116750853569815557532270825838757922217314748231826241930826238846175896997055564919425918463307658663171965135057749089077388054942032051553760309927468850847772989423963904144861205988704398838295854027686335454023567793114837657233481456867922127891951274737700618284015425

Ви можете замінити 4**4більші значення, поки не відчуєте, що це зайняло занадто багато часу або не зайняло занадто багато пам'яті.

На жаль, це занадто довго для межі цього завдання, і ви можете стверджувати, що результат 10 результату перетворюється на рядок, перш ніж він стає результатом, тому вираз насправді не дає числа. Але внутрішньо perl дійсно робить необхідну арифметику для перетворення вхідних даних у базу 10, що я завжди вважав досить акуратним.


2

TI-36 (не 84, 36), 10 байт, прибл. 9.999985426E99

Старі калькулятори також можуть бути запрограмовані в

69!58.4376

такій мірі;) Це дуже близько до максимального діапазону, який може відображати TI калькулятор:-1E100<x<1E100

enter image description here


2

Перл 6 , 456 574 цифри

[*] 1..ↈ

Немає TIO, оскільки для запуску потрібно 2 хвилини.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.