On Monday, 23 February 2015 at 23:10:32 UTC, anonymous wrote:
On Monday, 23 February 2015 at 20:21:20 UTC, Charles wrote:
My solution (150 characters, 15 points):
void main(){import std.stdio;int t,n;readf("
%d",&t);while(t--){readf(" %d",&n);real
a=0,i=0;for(;i<n;i++)a+=(i%2?-1:1)/(i+i+1);writefln("%.15f",a);}}
Link to problem site:
https://www.hackerrank.com/challenges/leibniz
Anyone care to do better? :)
126:
void main(){import std.stdio;real n,a;for(readln;a=0,readf("
%f",&n);writefln("%.15f",a))while(--n>=0)a+=(n%2?-1:1)/(n+n+1);}
Nice going. I didn't realize that the exponent operator was
outside of std.math with ^^ which is why I used the ternary
operator to achieve the same results, importing the standard
library is probably the most expensive thing for this challenge.
Yay learning things. With that in mind, and switching around --n
to n--, we can get the code down to 120 characters:
void main(){import std.stdio;real n,a=0;for(readln;readf("
%f",&n);writefln("%.15f",a))while(n--)a+=(-1)^^n/(n+n+1);}
On Tuesday, 24 February 2015 at 00:03:55 UTC, bearophile wrote:
Steve Sobel:
It can get down to 155 using ranges, but those imports really
are killer.
You usually don't want to design a language for code golfing
(but several exist, like http://esolangs.org/wiki/GolfScript ).
Yeah I know that they're languages designed for this, but they
feel like cheating for sure. Plus, GolfScript would be kinda odd
on DLang's forums ;)