Обчисліть перші N цифр e


13

Виклик

Напишіть програму для обчислення перших N (<= 10 ^ 3) цифр e .

Ваша програма повинна приймати як вхід ціле число N.

Вхід:

100

Вихід:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

Вхід:

7

Вихід:

2.718282

Вхід:

1000

Вихід:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035

Найкоротше рішення виграє!

Відповіді:


8

Математика (12 байт)

N[E,Input[]]

Ви можете спробувати онлайн: є e-digitsкоманда на yubnub.org, наприклад, yubnub.org/parser/parse?command=e-digits+1000, яка використовує wolframalpha wolframalpha.com/input/…
jfs

1
-1 тому, що ви не здійснюєте розрахунок самостійно.
FUZxxl

2
@FUZxxl: Автор не вимагав реалізації, бажані лише найкоротші.
Кіхот

7
@Quixotic У запитанні йдеться про "обчислення", а не просто на виході. Ви б заперечили те саме, якби в запитанні було сказано "обчислити", а не "обчислити"?
nitro2k01

7

Пітона, 69

e = f = n = 1; N = вхід () + 2; exec "e + = 10 ** N / f; f * = n; n + = 1;" * N; print'2. '+ `e` [ 1: -4]

Обчислює N + 2 ітерацій стандартного ряду потужностей для e.


6

J, 20 ... іш.

Обчислювальна, але ... Дуже неефективна. З n визначено (20):

(0 j.<:n)":+/%!i.x:n+9

Як монадійна функція (32):

ge =. 3 : '(0 j.<:y)":+/%!i.x:y+9'

Як негласна функція (33, фіксовано):

(0 j.<:)":(+/)&:(%&!&i.&x:&(9&+))

Це конвертується дуже швидко (на 100 цифр вам знадобиться "всього" 70 термінів), щоб ви могли це скинути +9.
Ельвенкс

На 1000 цифр це: (0 j.<:1000)":+/%!i.x:450займає всього кілька секунд.
Ельвакс

Чи хотіли б ви пояснити свій код?
aaaaaaaaaaaa

@Eelvex: Але мені потрібні додаткові терміни до N = 30 або близько того. (Будь-які натяки на зменшення цього безладу композицій, чи це правда?)
Джессі Мілікан

Ах, ти маєш рацію, це прикро. (Це «безлад» коротше , ніж все інше я міг придумати - якщо, звичайно , від, ви використовуєте фіксовану кількість для г , як :. (0 j.<:n)":+/%!i.999x, А потім мовчазно: (+/%!i.999x)":~0 j.<:)
Eelvex

5

Пітона, 67

import decimal as d
d.getcontext().prec=input()
print d._One.exp()

Зберегти 3 символи? from decimal import*і видалити обидваd.
Timtech

@Timtech import *не імпортує _Oneчерез провідне підкреслення.
jfs

Гаразд, не знав цього, вибачте /
Timtech

3

05AB1E, 4 3 2 байти

Закреслений 4 все ще є регулярним 4 (

Дякуємо @Adnan за байт.

žt

Використовує кодування CP-1252 .

Пояснення:

žt - Push input. Pop a, push e to a places (up to 10000).

Оновлення:

Видаліть I, як žtінакше приймає введення, якщо жодного немає в стеці.


1
Я зазначив це як неконкурентоспроможне, оскільки 05AB1E був створений приблизно через 4 з половиною роки після опублікування цього виклику.
Мего

@Mego Гаразд, я пам’ятаю, що робити це наступного разу.
Джордж Гібсон

1
Ласкаво просимо до головоломки програмування та коду для гольфу! žСимвол 1 байт в CP -1252 кодування, так що це має загальний бал 2 байта замість 3: р.
Аднан

@Adnan Дякую! Гарна мова, btw.
Джордж Гібсон

@GeorgeGibson Дякую! :)
Аднан

2

Рубі, 68

require 'bigdecimal/math';include BigMath;puts E(gets.to_i).to_s 'F'

він не працює на рубіні1.8. Це дає недійсні результати в ruby1.9
jfs

Ви маєте рацію, але це має працювати в Ruby 1.9. Там , здається, що - то не так з точністю в Е функції.
david4dev

Тут добре виглядає, він просто додає кілька неточних цифр. Мейбі, як це? вимагає 'великі / математичні'; ставить BigMath :: E (a = get.to_i) .to_s (? F) [0, a + 1]
steenslag

1

GolfScript 43 41

~10\?1:b 461,{)b*:b@+\}460*;*b/`);(;'2.'\

Редагувати: Я також міг би замінити 0 на залишок 1 від ініціалізації b, отримана різниця набагато мала, щоб зробити його вихідним.

Я залишив стару версію, тому що я задокументував нижче.

~10\?1:b;0 461,{)b*:b@+\}460*;*b/`);(;'2.'\

~10\?Візьміть вхід і обчисліть 10 ^ введення, результат залиште на стеку.
1:b;Зберігайте 1 в б.
0 461,Поставте 0 на стек, покладіть масив [0 1 ... 459 460] на стек.
{ }460*Виконати функцію 460 разів.
)b*:bВізьміть останній елемент масиву, помножте його на b, збережіть результат у b і залиште результат у стеці.
@+\Переключіть 0 (що становить лише нуль на першій ітерації) у верхній частині стека, додайте його до значення b, що залишилося, та поверніть результат знову.
;Видаліть решту масиву (залишилось лише [0]).
Число, яке було ініціалізовано на 0, тепер містить значення e * 460! і b тримайте 460!
*Помножте 10 ^ введення на e * 460! (вони є єдиними 2 елементами, що залишилися в стеку).
b/Ділимо результат на b.
Тепер стек містить вміст значення e * 10 ^, яке при перетворенні на рядок буде містити всі десяткові знаки, але не крапку.
`);(;'2.'\Купу струнних операцій, щоб помістити в крапку.

e * 460! обчислюється як 1 + 460 + 460 * 459 + 460 * 459 * 458 і т.д.



0

J, 17

(":&(x:^1)@*&0j1)

Приклад:

(":&(x:^1)@*&0j1) 50
2.71828182845891281655718620537435347047040502245993

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

^1 - computes e**1
x: - does extended precision
0jy ": - formats the number to y digit

*&0j1простоj.
FrownyFrog

0

GTB , 14

eS?`AS;_,1,A+1

Пояснення

e- Поставити eяк останнє обчислене значення

S?- Перетворити eв рядок_

`A - Вхід А

S;_,1,A+1Виведіть перші Aцифриe


0

Mathcad, [tbd] байт

введіть тут опис зображення

Використовується алгоритм викрутки - http://comjnl.oxfordjournals.org/content/11/2/229.full.pdf+html .


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


0

Математика, 7 байт

N[E,#]&

Моя відповідь - це подальша гольф цієї відповіді.

Спробуйте в Інтернеті!

Чомусь вихід на TIO виглядає смішно, але я перевірив його на своїй машині, і код працює чудово.


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