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 15pojawia się w sekwencji zamiast, 1 5ponieważ 1już wystąpił.
Zauważ też, że 0nie występuje, ponieważ nie jest dodatni; 950zawiera 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, Ni D, i wysyła Nth numer pirrational obciętyD dziesiętnej cyfry.
Djest zawsze dodatnia, ale Nnieujemna, a Dcyfry Pi powinny być wyprowadzane, gdy Nwynosi 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 Ni Dponiż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=13393na przykład, że trzeba cyfrę 31 milionowa PI