Since it is well after the weekend this may be an indication that  
a) I am not very good at this
b) I am trying to learn the language
c) I tend towards the compulsive side of personality

I would choose a) and b) but may be closer to c) than I think :-)

In any case I find one more fault in my test  2000 3 1 age 1999 2 28 returned 1 
0 1 instead of 1 0 2 because I had the year of birth being the decider of leap 
year instead of the reference year.
I really should be more careful with my test data (see a above). Here is the 
working version

Cheers, bob 

age =: 3 : 0 NB. age in yyyy mm dd as of x if born on y 
'left argument is today ; right argument is birth day result is age in yyyy mm 
dd'
:
if. x <&(1000#.]) y do. 'Wasn''t born yet!' return. end.  
'yb mb db'=. y
'yt mt dt'=. x
isleap=. 2 | +/ 0= 4 100 400 | yt 
dcount=.  31 , (28 + isleap ) , 31 30 31 30 31 31 30 31 30 31  
((yt-yb) - mt<mb) , ((12|mt-mb) - dt<db) , ((mt-2){dcount )|dt-db 
)
testdate =: 3 : 0
assert. 0 0 0 -: 2000 2 28 age 2000 2 28 NB. same date
assert. 0 0 1 -: 2000 1 1 age 1999 12 31 NB. (CORRECTED) New Years eve (Joe 
Bogner)
assert. 0 0 1 -: 2000 3 2 age 2000 3 1 NB. event and current after feb 29 in 
leap year
assert. 0 0 1 -: 2000 2 28 age 2000 2 27 NB. event and current before feb 29 in 
leap year
assert. 0 0 2 -: 2000 3 1 age 2000 2 28 NB. event before and current after feb 
29 in leap year
assert. 'Wasn''t born yet!' -: 2000 2 28 age 2000 3 1 NB. event before current 
in leap year
assert. 0 0 1 -: 1900 3 2 age 1900 3 1 NB. event and current after feb 28 in 
non leap year
assert. 0 0 1 -: 1900 2 28 age 1900 2 27 NB. event and current before feb 28 in 
non leap year
assert. 0 0 1 -: 1900 3 1 age 1900 2 28 NB. event before and current after feb 
28 in leap non year
assert. 'Wasn''t born yet!' -: 1900 2 28 age 1900 3 1 NB. event before current 
in non leap year
assert. 1 0 1 -: 2000 3 2 age 1999 3 1 NB. event previous year and current 
after feb 29 in leap year
assert. 1 0 1 -: 2000 2 28 age 1999 2 27 NB. event previous year and current 
before feb 29 in leap year
assert. 1 0 2 -: 2000 3 1 age 1999 2 28 NB. (CORRECTED) event previous year 
before and current after feb 29 in leap year
assert. 0 11 0 -: 2000 2 1 age 1999 3 1 NB. (CORRECTED) event previous year 
after and current before feb 29 in leap year
assert. 1 0 1 -: 1900 3 2 age 1899 3 1 NB. event previous year and current 
after feb 28 in non leap year
assert. 1 0 1 -: 1900 2 27 age 1899 2 26 NB. event previous year and current 
before feb 28 in non leap year
assert. 1 0 1 -: 1900 3 1 age 1899 2 28 NB. event previous year before and 
current after feb 28 in non leap year
assert. 0 11 0 -: 1900 2 1 age 1899 3 1 NB. (CORRECTED) event previous year 
after and current before feb 29 in non leap year
)

testdate ''

On Sep 23, 2014, at 10:20 AM, robert therriault <[email protected]> wrote:

> bob

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to