Definicje
- Liczba algebraiczna to liczba, która jest zerem niezerowego wielomianu o współczynnikach całkowitych. Na przykład pierwiastek kwadratowy z
2
jest algebraiczny, ponieważ wynosi zerox^2 - 2
. - Liczba transcendentalna jest liczbą rzeczywistą, która nie jest algebraiczna.
Zadanie
Masz wybrać liczbę transcendentalną.
Następnie napisz program / funkcję, która przyjmuje dodatnią liczbę całkowitą n
i n
wypisuje -tą cyfrę dziesiętną po przecinku wybranej liczby transcendentalnej. W swoim poddaniu musisz jasno określić, który numer transcendentalny jest używany.
Możesz użyć indeksowania 0 lub indeksowania 1.
Przykład
e^2=7.389056098...
jest liczbą transcendentalną. Dla tego numeru:
n output
1 3
2 8
3 9
4 0
5 5
6 6
7 0
8 9
9 8
...
Zauważ, że inicjał 7
jest ignorowany.
Jak wspomniałem powyżej, możesz wybrać inne liczby transcendentalne.
Punktacja
To jest golf golfowy . Najniższy wynik w bajtach wygrywa.
Odpowiedzi:
Python , 3 bajty
Wypróbuj online!
Pobiera ciąg liczbowy, wyświetla najmniejszą cyfrę jako najmniejszy znak. Na przykład
254
daje2
. Rozpoczyna się ułamek dziesiętny z tymi cyframiTo jest OEIS A054054 .
Twierdzenie: Liczba ta
c
jest transcendentalnaDowód: Zauważ, że
c
jest bardzo rzadki: prawie wszystkie jego cyfry mają zero. Jest tak, ponieważ dużen
, istnieje duże prawdopodobieństwo, żen
ma cyfrę zero, co daje cyfrę min zero. Co więcej,c
ma długie serie kolejnych zer. Używamy istniejącego wyniku, który stwierdza, że oznacza to, żec
jest to transcendentalne.Po tym pytaniu matematycznym , niech
Z(k)
reprezentuje pozycjęk
cyfry niezerowejc
i niechc_k
będzie tą niezerową cyfrą, liczbą całkowitą pomiędzy1
i9
. Następnie możemy wyrazić ekspansję dziesiętnąc
, ale tylko biorąc niezerowe cyfry, a jako sumę ponadk=1,2,3,...
odc_k/10^Z(k)
.Korzystamy z wyniku punktu 4 tej odpowiedzi George Lowther:
c
jest to transcendentalne, jeśli istnieje nieskończenie wiele przebiegów zer, które są co najmniej stałą ułamkiem liczby cyfr do tej pory. Formalnie musi istnieć cośε>0
takiegoZ(k+1)/Z(k) > 1+ε
dla nieskończenie wieluk
. Użyjemyε=1/9
Dla dowolnej liczby cyfr
d
, weźk
zeZ(k) = 99...99
zd
dziewiątek. Takik
istnieje, ponieważ ta cyfra wc
jest9
, a więc niezerowa. Licząc od99...99
, wszystkie te liczby zawierają cyfrę zero, więc oznacza to początek długiego ciągu zerc
. Następna niezerowa cyfra jest dostępna tylkoZ(k+1) = 1111...11
pod+1
nich. WspółczynnikZ(k+1)/Z(k)
nieznacznie przekracza1+1/9
.Spełnia to warunek dla każdego
d
, sugerując wynik.źródło
min
sam nie przyjmuje żadnych danych wejściowych i nie dostarcza danych wyjściowych, co wydaje się być wymagane przez pytanie. Oczywiście jest to kluczowa funkcja, ale nie robi nic bez generatora i instrukcji drukowania widocznej w „Wypróbuj online”.Pyth, 1 bajt
Dane wejściowe i wyjściowe są łańcuchami. Funkcja przyjmuje pierwszą cyfrę indeksu. Wynikowa liczba transcendentalna wygląda następująco:
0.0123456789111111111122222222223 ...
Jest to transcendentalne, ponieważ jest
1/9
plus liczba, która ma odcinki zer długości co najmniej stałego ułamka liczby. W oparciu o tę odpowiedź matematyczna.stackexchange oznacza to, że liczba jest transcendentalna.Są odcinki zer od cyfr
100 ... 000
do199 ... 999
, więc stosunekZ(k+1)
doZ(k)
wynosi 2 nieskończenie często.Zatem powyższa liczba minus
1/9
jest transcendentalna, a zatem powyższa liczba jest transcendentalna.źródło
Python 2 , 19 bajtów
N p cyfrą jest 1 , gdy n jest potęgą liczby 2 i 0 inaczej.
Wypróbuj online!
źródło
n&~-n>0
przy okazji jest krótszy.pieprzenie mózgu, 2 bajty
Podobnie jak niektóre inne odpowiedzi, zwraca pierwszą cyfrę dziesiętną, a resztę ignoruje.
źródło
Galaretka , 3 bajty
Wykorzystuje stałą Liouville.
Wypróbuj online!
źródło
Siatkówka, 4 bajty
Zwraca pierwszą cyfrę numeru wejściowego. Ponieważ ten port był tak nudny, oto kilka innych portów:
(8 bajtów) Zwraca minimalną cyfrę liczby wejściowej.
(25 bajtów) Zwraca 1, jeśli liczba wejściowa jest potęgą 2.
(30 bajtów) Stała Champernowne.
źródło
Brachylog 2, 7 bajtów
Wypróbuj online!
Oblicza cyfry stałej Champernowne (być może razy potęga dziesięciu z powodu problemów z indeksowaniem, które oczywiście nie mają znaczenia tutaj). Zasadniczo, to po prostu łączy liczby całkowite, a następnie przyjmuje n-tą cyfrę.
źródło
⟦₁
?0123
nie jest liczbą (ma wiodące zero, które nie pasuje do koncepcji Brachylog dotyczącej tego, czym jest liczba).Python 2, 13 bajtów
Dane wejściowe i wyjściowe są łańcuchami.
N-ta cyfra liczby jest najbardziej znaczącą cyfrą n, gdy jest zapisywana dziesiętnie.
źródło
MATL , 7 bajtów
Wykorzystuje pierwszą z dwóch podanych tutaj liczb podzielonych przez 3 (która utrzymuje transcendencję ):
Dane wejściowe są oparte na 1. Wypróbuj online! Lub zobacz pierwsze 20 miejsc po przecinku .
Wyjaśnienie
źródło
JavaScript, 51 bajtów
Ta funkcja oblicza
n
cyfrę stałej Champernowne. Dodajf=
na początku i wywołaj jakf(arg)
. Pamiętaj, żen
jest indeksowany 1.Wyjaśnienie
Ta funkcja przyjmuje pojedynczy argument
n
. Następnie tworzyn
ciąg znaków o długości-powtarzających się 1s. Następnie dzieli ten ciąg na tablicę 1s. Następnie iteruje się nad każdym elementem tablicy i mnoży je z ich indeksem w tablicy inkrementowanym o 1. Następnie łączy tablicę razem""
(pusty ciąg), tworząc ciąg. W końcu zwracan
element th otrzymanego ciągu.Uwaga: Typ zwracanej wartości to zawsze Ciąg .
Test Snippet
źródło
Python 2, 43 bajty
Stała Champernowne.
źródło
n+1
?APL (Dyalog) , 3 bajty
Wypróbuj online! (zestaw testów generuje zakres liczb od
1
do10000
, konwertuje je na ciąg, a następnie stosuje2|⍴
na nich pociąg ).Pobiera liczbę wejściową jako ciąg znaków i zwraca jej mod długości 2. Więc
123
=>3 mod 2
=>1
.Sekwencja zaczyna się tak:
więc można to uogólnić w następujący sposób:
9 1s 90 0s 900 1s ...
Pomnożenie tej liczby przez 9 daje nam liczbę Liouville , o której udowodniono, że jest transcendentalna.
źródło
1 - 10^-9 + 10^-99 - 10^-999 + 10^-9999 - 10^-99999 + ...
, więc jest to numer Liouville.Haskell,
25 bajtów17 bajtówStała Champernowne może być zindeksowana 0 lub 1, ponieważ C10 * .01 jest wciąż transcendentalny.
Edycja: zgodnie z komentarzem nimisa możesz użyć listy monad, aby to zmniejszyć
źródło
=<<
z listy monady jestconcat.map
:(!!)$show=<<[1..]
.JavaScript, 73 bajty
Jest to program, który oblicza
n
dziesiątą cyfrę stałej Liouville'a, gdzien
jest liczbą wejściową podaną przez wywołanie funkcjig
jakog(arg)
(in
jest indeksowana 1). Pamiętaj, że nowa linia w kodzie jest konieczna.Wyjaśnienie
Program składa się z dwóch funkcji
f
orazg
.f
jest rekurencyjną funkcją obliczeniową ig
jest główną funkcją programu.g
zakłada jeden argumentn
. Definiuje domyślny argumentr
o wartości 0. Następnie iteruje wszystkie liczby całkowite od 0 don
i, w każdej iteracji, sprawdza, czyf
zastosowana funkcjai
(bieżący indeks) jest równan
, tj. Czyn
jest silnia zi
. Jeśli tak się dzieje,r
wartość jest ustawiana na 1. Na końcu funkcjir
zwracana jest wartość.Urywek do testowania
Ostrzeżenie: nie umieszczaj bardzo dużej wartości w polu wprowadzania Snippet! W przeciwnym razie urządzenie może się zawiesić!
źródło
Pyth,
754 bajtówWypróbuj online!
Wykorzystuje stałą Champernowne.
Zaoszczędzono
23 bajty dzięki Dziurawej Zakonnicy.źródło
jk
do zastąpieniasm`d
S
zamiastUh
?S
zaczyna się od1
iU
zaczyna się od0
.Java 8, 18 bajtów
To samo co odpowiedź Dennisa na Python 2 , numer Fredholm
źródło
(n-1)
może być~-n
lub--n
aby zapisać 2 bajty. Lub możesz mieć dokładnie to samo co odpowiedź Dennisa :n->1>>(n&~-n)
lub1>>(n&--n)
.Galaretka , 1 bajt
Wypróbuj online!
Pierwsza cyfra cytowanego wejścia 0-indeksowanego. 1
1 Zobacz odpowiedź isaacga na dowód ważności.
źródło
Węgiel , 24 bajty (niekonkurencyjny)
Wypróbuj online!
Uwaga: Począwszy od postu czasie, nie działa
n
, gdzien
jest dodatnia wielokrotność 14.Wyjaśnienie
źródło
GetVariable(Pi)
? Więc nie maπ
predefiniowanej zmiennej?π
wyrównywać liczby pi, ponieważ jest to język zorientowany na sztukę ASCII, a nie zorientowany na matematykęJapt ,
31 + 1 = 21 bajtKolejny port rozwiązania feersum .
Pobiera dane wejściowe jako ciąg.
Wypróbuj online
Wyjaśnienie
źródło
g
dla 1 bajtu :)TI-BASIC, 16 bajtów
Zasadniczo sprawdza, czy wejście
N
(indeksowane 1) jest liczbą trójkątną. Jest to to samo, co zwracanieN
dziesiątej cyfry 0.1010010001…, która okazała się transcendentalna. Sekwencja cyfr to OEIS A010054 .źródło
Fourier, 16 bajtów
Wypróbuj online!
Podobnie jak inne odpowiedzi, wypisuje pierwszą cyfrę wejścia.
Objaśnienie kodu:
źródło
JavaScript (ES6)
Tylko kilka portów innych rozwiązań
feersum's Python solution , 12 bytes
Pokaż fragment kodu
Rozwiązanie Dennisa w języku Python , 13 bajtów
Pokaż fragment kodu
xnor rozwiązanie Python , 20 bajtów
źródło
Brain-Flak , 6 + 3 (
-c
) = 9 bajtówWypróbuj online!
1. cyfra wejściowego ciągu 0-indeksu (stąd
-c
flaga).źródło
C #, 13 bajtów
Z rozwiązania feersum. Prawie takie samo rozwiązanie jak port js.
Wypróbuj online
źródło
05AB1E ,
31 bajtEDYCJA : Korzystając z dowodu z innych odpowiedzi, zwraca pierwszą cyfrę wejścia
1 indeksowany dla π (tylko do 100000 cyfr)
Jak to działa
Lub, jeśli wolisz e (nadal 1-indeksowany) (tylko do 10000 cyfr)
Wypróbuj online!
źródło
J, 2 bajty
To samo rozwiązanie, z którego korzystają wszyscy inni:
Zwraca pierwszą cyfrę n. IO jest na sznurkach
Stała Liouville'a, 9 bajtów
Zwraca,
1
jeśli wejście jest silnią liczby całkowitej.Pi, 13 bajtów
Ostatnia nie dziesiętna cyfra pi razy 10 ^ n.
źródło
Galaretka , 2 bajty
Wypróbuj online!
Weź długość modulo liczby wejściowej 2. Odpowiednik tej odpowiedzi APL .
źródło
Dreaderef , 5 bajtów
Wypróbuj online!
Zwraca pierwszą cyfrę wejścia.
źródło
Momema , 5 bajtów
Wypróbuj online!
Zwraca pierwszą cyfrę wejścia.
źródło
Język programowania Szekspira , 76 bajtów
Wypróbuj online!
źródło