On 06/27/2013 09:48 PM, John Colvin wrote:
On Thursday, 27 June 2013 at 18:37:26 UTC, Timon Gehr wrote:
On 06/26/2013 10:51 PM, Gary Willoughby wrote:
Just for a bit of fun, I saw this question posted on reddit the other
day and wondered how *you* would solve this in D?

http://stackoverflow.com/questions/731832/interview-question-ffn-n

int f(int x){ return x?(x&1?x:-x)+(x>0?1:-1):0; }

unittest{
    foreach(x;int.min..int.max)
        assert(f(f(x))==-x);
}

That highly compound statement..... Why?

It is easy to see what it is doing this way.

Surely you would never write
anything like this either in production code (unless absolutely
necessary)  or in an interview?


Why not? The function fulfills the specification in a straightforward way.

It's fine as a one-off, but a whole code-base full of this style would
be horrifying.

I don't know. This depends on the kind of code base and the exact meaning of 'this style'. There are many programming languages where it is convenient/required to write every function in a single expression and those are not horrifying at all.

Reply via email to