Pi jest liczbą nieracjonalną , co oznacza, że jego reprezentacja dziesiętna nigdy się nie kończy ani się nie powtarza.
Pi jest obcięty do 41 cyfr dziesiętnych (40 miejsc) 3.1415926535897932384626433832795028841971
.
Jeśli zignorujemy przecinek dziesiętny i wymienimy cyfry jako ciąg dodatnich liczb całkowitych, unikając duplikatów , otrzymamy 3 1 4 15 9 2 6 5 35 8 97 93 23 84 62 64 33 83 27 950 28 841 971
( OEIS A064809 ).
(Zauważ, że 15
pojawia się w sekwencji zamiast, 1 5
ponieważ 1
już wystąpił.
Zauważ też, że 0
nie występuje, ponieważ nie jest dodatni; 950
zawiera pierwsze zero.)
Aby skonstruować pierwszą liczbę piracyjną , używamy tej sekwencji do indeksowania cyfr Pi (pierwsza cyfra to 3, druga 1 itd.).
Pierwsza cyfra pierwszego numeru pirracyjnego to trzecia cyfra Pi,
druga cyfra to pierwsza cyfra Pi,
trzecia cyfra to czwarta cyfra Pi,
czwarta to piętnasta cyfra Pi
i tak dalej.
Kropka dziesiętna jest dodawana po pierwszej cyfrze, aby naśladować Pi.
Tak więc jest to pierwsza liczba piracka licząca do 41 cyfr 4.3195195867462520687356193644029372991880
.
(Zauważ, że dla 30 cyfry musiałem przejść do 974 cyfry Pi.)
Aby skonstruować drugą liczbę piracyjną, proces powtarza się przy użyciu pierwszej liczby piracyjnej zamiast Pi. (Sam Pi można nazwać zerową liczbą piracyjną.) Tak więc nowa sekwencja jest, 4 3 1 9 5 19 58 ...
a pierwsza liczba piiracyjna jest indeksowana w celu uzyskania drugiej, która się rozpoczyna 9.14858...
.
Dalsze liczby pirackie są tworzone w ten sam sposób, a każda z nich jest generowana z poprzedniej.
Wyzwanie
Twoim zadaniem jest napisać najkrótszy program, który odbywa się w dwóch liczb całkowitych, N
i D
, i wysyła N
th numer pirrational obciętyD
dziesiętnej cyfry.
D
jest zawsze dodatnia, ale N
nieujemna, a D
cyfry Pi powinny być wyprowadzane, gdy N
wynosi 0.
KiedyD
wynosi 1, nie ma znaczenia, czy przecinek dziesiętny jest obecny, czy nie.
Dane wejściowe powinny pochodzić ze stdin lub wiersza poleceń, a dane wyjściowe powinny przejść do stdout (lub najbliższych alternatywnych języków).
Twój program powinien działać dla wszystkich wartości wejściowych N
i D
poniżej 2 16 , ale nie musi być aktualny ani wydajny.
Najkrótszy kod w bajtach wygrywa.
(Pamiętaj, że liczby pirackie wychodzą z innych baz, ale wszystko w tym wyzwaniu odbywa się w bazie 10.)
N=1
, D=13393
na przykład, że trzeba cyfrę 31 milionowa PI