How would you solve this 'interview' question in D?

Timon Gehr timon.gehr at gmx.ch
Thu Jun 27 15:31:20 PDT 2013


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.


More information about the Digitalmars-d-learn mailing list