Гольф - трансцендентний номер


46

Визначення

  • Алгебраїчне число - це число, яке дорівнює нулю ненульового многочлена з цілими коефіцієнтами. Наприклад, квадратний корінь 2алгебраїки, тому що він дорівнює нулю x^2 - 2.
  • Трансцендентальне число - це дійсне число, яке не є алгебраїчним.

Завдання

Ви повинні вибрати трансцендентальне число.

Потім напишіть програму / функцію, яка приймає додатне ціле число nі виводить nдесяту десяткову цифру після десяткової крапки вибраного трансцендентального числа. У поданні ви повинні чітко зазначити, який трансцендентальний номер використовується.

Можна використовувати 0-індексацію або 1-індексацію.

Приклад

e^2=7.389056098...є трансцендентним числом. Для цього номера:

n output
1 3
2 8
3 9
4 0
5 5
6 6
7 0
8 9
9 8
...

Зауважте, що початковий 7ігнорується.

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

Оцінка балів

Це . Найнижча оцінка в байтах.


Як різні відповіді обробляють той факт, що існує кінцева кількість цілих чисел, які можна використовувати як аргумент? 0 буде прийнятною відповіддю, оскільки існує трансцендентальне число, чиї перші цифри maxInteger - 0
WNG

1
@WNG Мови мають довільну точність. Максимального числа немає.
Лина монашка

1
@WNG Вхідний індекс можна вважати рядком, а не цілим числом на мовах, які не мають довільно великих типів чисел.
isaacg

Відповіді:


112

Пітон , 3 байти

min

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

Бере числовий рядок, виводить його найменшу цифру як найменший символ. Наприклад, 254дає 2. Починається десяткова частина з цими цифрами

0.0123456789011111111101222222220123333333012344444401234555550123456666012345678801234567

Це OEIS A054054 .

Претензія: Це число cє трансцендентним

Доказ: Зауважте, що cце дуже рідко: майже всі його цифри дорівнюють нулю. Це тому, що велика n, велика ймовірність nмає нульову цифру, даючи цифру min нуля. Більше того, cмає довгі прогони послідовних нулів. Ми використовуємо існуючий результат, який стверджує, що це засіб cє трансцендентним.

Дотримуючись цього питання math.SE , дозвольте Z(k)зобразити позицію k' ненульової цифри c, а нехай c_kце ненульова цифра - ціле число між 1і 9. Тоді ми висловлюємо розкладання десяткового з c, але тільки з ненульовими цифрами, а також на суму понад k=1,2,3,...з c_k/10^Z(k).

Ми використовуємо результат пункту 4 цієї відповіді Джорджа Лоутера: cце трансцендентально, якщо існує нескінченно багато прогонів нулів, які є принаймні постійною часткою від числа цифр досі. Формально повинно бути ε>0так, що Z(k+1)/Z(k) > 1+εдля нескінченно багатьох k. Ми використаємоε=1/9

Для будь-якої кількості цифр d, візьміть kз Z(k) = 99...99з dдев'ятками. Таке kіснує, тому що ця цифра в c- це 9і так не нульова. Підрахувавши всі 99...99, ці числа містять нульову цифру, тому це означає початок довгого прогону нулів у c. Наступна ненульова цифра не до Z(k+1) = 1111...11з d+1них. Співвідношення Z(k+1)/Z(k)трохи перевищує 1+1/9.

Це задовольняє умову кожного d, маючи на увазі результат.


Я був би дуже радий бачити докази.
Лина монашка

1
Це дозволено? minсама по собі не приймає жодних даних і не надає жодного результату, що, здається, є вимогою до запитання. Звичайно, це ключова функція в цілому, але вона не робить нічого без заяви генератора та друку, викладеної в "Спробуйте в Інтернеті".
Щогли

6
@Машта Так, проблема полягає у виведенні n-ї цифри, заданої n, а не у формуванні десяткової. Код тесту - показати послідовність цифр. І вираз, який оцінює функцію, включаючи функцію буквал, є дійсним поданням функції .
xnor

1
чудовий :)))
Noodle9

38

Піт, 1 байт

h

Вхід і вихід - це рядки. Функція приймає першу цифру індексу. Отримане трансцендентальне число виглядає так:

0.0123456789111111111122222222223 ...

Це трансцендентально, оскільки це 1/9плюс число, яке має розтягнення нулів довжини принаймні постійну частку числа. Виходячи з цієї відповіді math.stackexchange , це означає, що число є трансцендентним.

Є розтягнення нулів - від цифри 100 ... 000до цифри 199 ... 999, тому відношення Z(k+1)до Z(k)дорівнює 2 нескінченно часто.

Таким чином, вищенаведене число мінус 1/9є трансцендентним, і тому вищенаведене число є трансцендентним.


1
Зауважте, що питання, поставлене у зв’язаній публікації M.SE, не стосується цього номера, але пункт 4 відповіді Джорджа Лоутера.
Геннінг Макгольм

16

Python 2 , 19 байт

lambda n:1>>(n&~-n)

П - й цифра 1 , якщо п є ступенем 2 і 0 в іншому випадку.

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


3
Я збирався відповісти на це, але не знайшов доказів його трансцендентності. Що змушує вас вважати, що це число є трансцендентним? n&~-n>0коротше, до речі.
orlp



@orlp Мені доведеться запитати ОП, чи добре буленів.
Денніс

1
@Scrooble Ці
Денніс

11

мозковий ебать, 2 байти

,.

Як і деякі інші відповіді, повертає першу десяткову цифру, а решту ігнорує.



5

Сітківка, 4 байти

1!`.

Повертає першу цифру вхідного номера. Оскільки цей порт був такий нудний, ось ще кілька портів:

O`.
1!`.

(8 байт) Повертає мінімальну цифру вхідного числа.

.+
$*
+`^(11)+$
$#1$*
^1$

(25 байт) Повертає 1, якщо вхідне число є потужністю 2.

.+
$*_

$.`
+1`.(\d*)_
$1
1!`.

(30 байт) Константа Шамперновна.


4

Брахілог 2, 7 байт

⟦₁c;?∋₎

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

Обчислює цифри константи Чамперновна (можливо, в рази потужність десять через проблеми індексації, які тут явно не мають значення). В основному, це просто об'єднує цілі числа, а потім приймає n-й розряд.


Навіщо вам це потрібно ⟦₁?
Leaky Nun

@LeakyNun: Тому що в іншому випадку ми почнемо об'єднувати числа з 0, а ви не можете цього зробити, оскільки 0123це не число (у нього є провідний нуль, який не вписується в поняття Брахілога про те, що таке число).

4

Python 2, 13 байт

Вхід і вихід - це рядки.

lambda n:n[0]

N-та цифра числа є найбільш значущою цифрою n, коли вона пишеться у десятковій формі.


4
Ви повинні вказати, чому це число є трансцендентним.
orlp

2
@orlp Схоже, посилання xnor може бути також легко застосовано і тут - відніміть 1/9 від числа, а потім Z (n + 1) / Z (n) ~ = 2 нескінченно часто (між 10 ^ x і 2 * 10 ^ x ).
feersum

4

MATL , 7 байт

4YA50<A

Тут використовується перше з двох наведених тут чисел, розділених на 3 (що підтримує трансцендентність ):

1.100110000000000110011 ...

Введення на основі 1. Спробуйте в Інтернеті! Або подивіться перші 20 десятків .

Пояснення

4YA     % Convert to base 4 using chars '0', '1', '2', '3' as digits
50<A    % Are all digits less than '2'? Gives 0 (false) or 1 (true) 

3

JavaScript, 51 байт

Ця функція обчислює nцифру Константи Шамперновна. Додайте f=на початку та посилайтеся на зразок f(arg). Зверніть увагу, що nце 1-індексація.

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

Пояснення

Ця функція бере один аргумент n. Це, таким чином, створює n-характеристику довгих рядків повторюваних 1с. Потім він розбиває цей String у масив 1s. Після цього він повторює кожний елемент масиву і помножує їх на їх індекс у масиві з інкрементом на 1. Потім він з'єднується з масивом разом над ""(порожній рядок), щоб утворити рядок. Нарешті, він повертає nth елемент отриманої String.

Примітка: Тип повернутого значення завжди є String .

Тест-фрагмент

let f =

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

i.oninput = e => o.innerHTML = f(parseInt(e.target.value,10));
<input id=i><pre id=o></pre>


3

Python 2, 43 байти

Постійна Шамперновна

lambda n:"".join(`i`for i in range(n+1))[n]

Навіщо вам це потрібно n+1?
Leaky Nun

@LeakyNun Тому що я отримую помилки індексації для n <= 1.
orlp

Можна використовувати 1-індексацію.
Лина монашка

@LeakyNun n <= 1.
orlp

Я думаю, вам потрібно вказати Python 2 для цього.
числоманіяк

3

APL (Dyalog) , 3 байти

2|⍴

Спробуйте в Інтернеті! (тестовий набір генерує діапазон чисел від 1до 10000, перетворює їх у рядок, а потім застосовує 2|⍴на них поїзд ).

Приймає число введення як рядок і повертає його довжину mod 2. Отже 123=> 3 mod 2=> 1.

Послідовність починається так:

1  1  1  1  1  1  1  1  1  0  0  0  0  0  0  ...

тож це можна узагальнити так: 9 1s 90 0s 900 1s ...

Помноження цього числа на 9 дає нам число Ліувілля , яке, як доведено, є трансцендентним.


Я не думаю, що це обов'язково номер Ліувілля - мені не очевидно, що ви можете отримати n> 10. Хоча це відповідає сильнішій теоремі, яку використовують інші люди тут.
Ørjan Johansen

@ ØrjanJohansen Ви можете виразити це так 1 - 10^-9 + 10^-99 - 10^-999 + 10^-9999 - 10^-99999 + ..., то це число Ліувілля.
Лина монашка

@LeakyNun Частка послідовних показників становить приблизно 10, але, щоб відповідати визначенню у Вікіпедії, це потрібно необмежено - саме тому первісні індекси константи Лювіля використовують фактор, а не експоненціальний.
Ørjan Johansen

3

Haskell, 25 байт 17 байт

(!!)$concat$map show[1..]

Константа Шамперновна може бути 0 або 1 індексованою, оскільки C10 * .01 все ще є трансцендентною.

Редагувати: відповідно до коментаря nimis, ви можете скористатися монадою списку, щоб зменшити це

(!!)$show=<<[1..]

2
=<<зі списку монади concat.map: (!!)$show=<<[1..].
німі

2

JavaScript, 73 байти

Це програма, яка обчислює nту цифру константи Ліувілля, де nвводиться номер, заданий викликом функції gяк g(arg)nє 1-індексованою). Зауважте, що новий рядок у коді необхідний.

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

Пояснення

Програма складається з двох функцій, fі g. fє рекурсивною факторно-обчислювальною функцією і gє основною функцією програми. g передбачається мати єдиний аргумент n. Він визначає аргумент за замовчуванням rзі значенням 0. Потім він повторює всі Цілі числа від 0 до n, і при кожній ітерації перевіряє, чи дорівнює функція, fзастосована над i(поточний індекс) n, тобто чи nє факторіалом i. Якщо це трапляється так, rзначення встановлюється на 1. В кінці функції rповертається.

Фрагмент для тестування

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

i.oninput = e => o.innerHTML = g(parseInt(e.target.value,10))
<input id=i><pre id=o></pre>

Попередження: Не вкладайте дуже велике значення у поле введення фрагменту! В іншому випадку ваш пристрій може замерзнути!


1

Pyth, 7 5 4 байти

@jkS

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

Використовує константу Шамперновна.

Збережено 2 3 байти завдяки Leaky Nun.


1
ви можете використовувати jkдля заміни sm`d, я вважаю.
Лина монашка

1
Можна використовувати Sзамість Uh?
Лина монашка

Я думаю, що вони функціонально однакові, так що так. Я повністю читав документи>.>
плескаю

Вони не функціонально ідентичні. Sпочинається з 1і Uпочинається з 0.
Лина монашка

Чому ви відновили свою редакцію? Отримане число все ще є трансцендентним.
Leaky Nun



1

Вугілля деревне , 24 байти (неконкурентоспроможне)

NαAIUVN⟦UGPi⁺α¹⟧β§β⁺α›α⁰

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

Примітка. Станом на час публікації не працює, nколи nпозитивний кратний 14.

Пояснення

Nα                             Input number to a
   A                  β        Assign to b
     I                         Cast
       UVN                    Evaluate variable N
            ⟦UGPi⁺α¹⟧         With arguments GetVariable(Pi) and a+1
                        §β⁺α›α⁰ Print b[a+(a>0)]

GetVariable(Pi)? Отже, немає πвизначеної змінної?
Ніл

@Neil Ще немає, і я не збираюся робити πрівним pi, тому що це мова, орієнтована на мистецтво ASCII, а не орієнтована на математику
лише для ASCII

1

Япт , 3 1 + 1 = 2 1 байт

Ще один порт рішення феерсуму .

Вводиться як рядок.

g

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


Пояснення

   :Implicit input of string U
g  :The first character of the string

Вхід може бути рядком, тому ви можете зробити gза 1 байт :)
Олівер

У виклику не згадується введення рядків, @obarakon, тому я використовував цілі числа у своїх портах JS, а потім, у свою чергу, тут.
Кудлатий

Ах, готча. Багато інших відповідей використовували рядкові введення. Але ти маєш рацію, ОП не зазначила цього у виклику.
Олівер

1

TI-BASIC, 16 байт

В основному тестує, чи є вхідний N(1-індексований) трикутний номер. Це те ж саме, повертаючи Nй розряд 0.1010010001 ..., яка доведена трансцендентним. Послідовність цифр - OEIS A010054 .

Input N
int(√(2N
2N=Ans(Ans+1


0

JavaScript (ES6)

Всього кілька портів деяких інших рішень


рішення Python feersum , 12 байт

n=>(""+n)[0]


Рішення Денніса Python , 13 байт

n=>1>>(n&--n)


Рішення Python xnor , 20 байт

n=>Math.min(...""+n)



0

05AB1E , 3 1 байт

EDIT : Використовуючи доказ з інших відповідей, повертає першу цифру введення

¬

1-індексований для π (лише до 100000 цифр)

žs¤

Як це працює

žs  # Implicit input. Gets n digits of pi (including 3 before decimal)
  ¤ # Get last digit

Або, якщо ви віддаєте перевагу e (все ще 1-індексований) (лише до 10000 цифр)

žt¤

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


0

J, 2 байти

Те саме рішення, що і всі інші:

{.

Повертає першу цифру n. IO на струнах

Константа Ліувілля, 9 байт

(=<.)!inv

Повертає, 1якщо введення є коефіцієнтом цілого числа.

Пі, 13 байт

{:":<.@o.10x^

Остання недесяткова цифра pi разів 10 ^ n.





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