dominiko ([info]dominiko) wrote,
@ 2009-01-31 19:46:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
3.141592653589793238...
              $|=3,141592;sub _
          {print@_}sub o{_++$O[0
        ];_ 0for 1..$#O}sub O{$;=int
      $=/10,'0/^           ^';if($;<9)
     {_$_ for                 @O;;@O=()
    ;0}push                     @O,$;;0
   ,;push@                       O,'.'if
   $^==1;                         0;if($;
   ==10){          print          ,o,@O=(
   )}}$?=         1000000         ;$-=10*
   (q/@O=       digits of pi      =10/,1)
   *int($?                       /3)+1;$
    _=2for@                     ,[0..$-]
     ,;for$^                   (1..$?){
     $"=$-;$O                 =0;until
       ($"<0){$/=          2*$"+1;$/=
        10if$/==1;$==10*$,[$"]+$O;$,
          [$"]=$=%$/;$O=int($=/$/
               )*$"--,10}O}o
Mi bezonis provi ĉi tiun Perl-skripton, por kredi, ke ĝi ja faras tion, kion ĝi pretendas. Provu vi mem. Belega mallonga programo kun mirinda eliro. Plie, oni povas agordi la nombron de komputendaj ciferoj de π redaktante la centran nombron 1000000.



(1 comment) - (Post a new comment)


[info]dominiko
2009-01-31 09:16 pm UTC (link)
La versio en C estas nekredeble mallonga kaj pli rapida:
a[52514],b,c=52514,d,e,f=1e4,g,h;main(){for(;b=c-=14;h=printf("%04d",
e+d/f))for(e=d%=f;g=--b*2;d/=g)d=d*b+f*(h?a[b]:f/5),a[b]=d%--g;}

(Reply to this)


(1 comment) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…