Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Coding puzzle 2
Message
From
05/06/2002 10:13:55
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivia
 
General information
Forum:
Visual FoxPro
Category:
Other
Title:
Miscellaneous
Thread ID:
00664570
Message ID:
00664919
Views:
23
>>>Ok, that 'puzzle' from Hilmar was far too easy (took me 10 seconds, ok .. 30).
>>>
>>>Here's a nice contest. Who can write the shortest function (using native vfp functions/commands) that returns a person's age. Input is the birthday and the current date. The winner will get 3 points from me!
>>
>>59 Gibson:
lpar b,d
>>RETU floo(INT((VAL(DTOS(d))-VAL(DTOS(b))))/10000)
>>
>
>BTW, this one was not really from Gibson, this is the Jim Booth's solution :-)
>
>Optimized to save characters:
>
>I have look at it and notice that the INT() part was not needed at all.
>I have used the INT() function instead of FLOOR() to save one more char.
>Using the "FUNCTION age(b,d)" declaration, no need of "lPar B,d"
>
>RETU INT((VAL(DTOS(d))-VAL(DTOS(b)))/10000)
>
>
>The shortest function was now at 43 chars :-)

This can be further shortened, replacing the two val() with an eval(), and using scientific notation for "10000":
RETU INT(eval(dtos(d)+"-"+dtos(b))/1e4))
(39 characters)

Hilmar.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform