I think if I were teaching children, I would not immerse them in the complexity of date systems. I think instead, I would have them draw lines and stuff.
7=+/~i.8 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 That said, if think I would also claim that the age of the groundhog should be 12 years, 6 months and 46 days. My reasoning here is that the days from february 2002 and the days from september 2014 do not add together to make a complete month. February is 28 days long, and September is 30 days long. I can't make sense of mixing days from the two months and combining them to get a month because we do not know how long that month is. I do not know how long Febember should be. I'd run into a similar issue if the date range started and ended in Februrary and only one of them was from a leap year. In other words here's the answers I'd produce for your test cases: 2014 9 20 age 2002 02 02 NB. Age of Groundhog 12 6 46 2014 9 20 age 1958 1 13 NB. I am getting too old for this :-) 56 8 7 1989 7 29 age 1958 1 13 NB. Wedding day age 31 5 47 2014 9 20 age 1989 7 29 NB. Years, months, days married, but who's counting 25 1 21 Maybe I should also forbid combining partial months together when they are the same length but have different month names? I'm uncertain about that, but I also don't feel strongly enough about the issue want to go there. Thanks, -- Raul On Sun, Sep 21, 2014 at 3:01 AM, robert therriault <[email protected]> wrote: > Hi Linda, > > I may take a look at that tomorrow, but for now I cleaned up some logic that > was creating problems around the one month mark and changed the dcount so > that it was not cumulative, but also included a left argument that allows me > to change the current date as well. > > ymd=: 4 : 0 NB. elapsed time: x is today, y is birthdate > [: NB. Can't think of a meaningful date for default x so trigger domain > error > : > if. x <&todayno y do. 'Wasn''t born yet!' return. end. > 'yb mb db' =: bday =: y > 'yt mt dt' =: today =: x > yt=. yt- today bdYet yt,}.bday NB. is today before or after this year's > birthday > dcount=: (<:mb)|. 31,(28 + leap yt), 31 30 31 30 31 31 30 31 30 31 NB. > rotate to fit birth month > elapsed=: -/ todayno"_1 today,: yt,}.bday NB. days since previous birthday > mr=:_1 > if. elapsed=0 do. (yt-yb),0 0 return. end. > while. (elapsed >: 0) do. dr=:elapsed > mr=:>:mr > elapsed=.elapsed -{.dcount > dcount=.}.dcount > end. > (yt-yb),mr, dr NB. result in yy mm dd > ) > > leap=: 0= 4&| > bdYet=:(0>-/) &: todayno NB. returns 1 if the current date is in the same > calendar year before the birthday > > > 2014 9 20 ymd 2002 02 02 NB. Age of Groundhog > 12 7 18 > 2014 9 20 ymd 1958 1 13 NB. I am getting too old for this :-) > 56 8 7 > 1989 7 29 ymd 1958 1 13 NB. Wedding day age > 31 6 16 > 2014 9 20 ymd 1989 7 29 NB. Years, months, days married, but who's > counting > 25 1 22 > ymd 2002 02 02 NB. needs to be dyadic > |domain error: ymd > | ymd 2002 2 2 > > Cheers, bob > > > On Sep 20, 2014, at 11:48 PM, Linda Alvord <[email protected]> wrote: > >> That's interesting. I started chipping away at it by finding the years >> first. From 1800 1 1 a four year block would have 1+4*365 days or an average >> of 365.25 per year. So That extra wouldn't happen until 4 years had passed. >> See if you would like it better if you remove the years first. I'll see >> what I get if I work in your direction. >> >> Linda >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of robert >> therriault >> Sent: Sunday, September 21, 2014 1:54 AM >> To: [email protected] >> Subject: Re: [Jprogramming] Weekend Puzzle - Age of Groundhog born 2002 2 2 >> >> Hi Linda, >> >> I share your dream and sometimes the statement 'I have a dream' can change >> the world. :-) >> >> On to the weekend puzzle... >> >> The first thing I need to figure out is whether the birthday has happened >> this year or not. If it has then I can pretty easily get the number of days >> since the birthday using todayno, but if it hasn't then I need to find the >> number of days since the previous year's birthday. >> >> 'yg mg dg' =: gbday =: 2002 2 2 NB. Groundhog's birthday >> 'ya ma da'=:afterbday =: 2014 9 20 NB. An example of date after the >> birthday >> 'yb mb db'=:beforebday =: 2014 1 31 NB. An example of a date before the >> birthday >> >> bdYet=:(0>-/) &: todayno NB. returns 1 if the current date is in the same >> calendar year before the birthday >> ya >> 2014 >> ya=. ya- afterbday bdYet ({. afterbday),}.gbday NB.use the current year >> from example and the birthday >> ya >> 2014 >> yb >> 2014 >> yb=. yb- beforebday bdYet ({. beforebday),}.gbday >> yb >> 2013 >> >> Next thing would be to define a vector that gives the accumulated days in >> the year if the year were to start on February 1st. The leap year issue >> means that the first item in the list will be 29 if it is a leap year. since >> I have already figured out whether I am counting from the previous year, I >> will use the adjusted year to decide if the year that I am counting from was >> a leap year. I will just use a simple (and incorrect) version of leap year. >> >> leap=: 0= 4&| >> feb=: 28 + leap ya >> feb >> 28 >> [daysFebFirst=: +/\ (feb), 31 30 31 30 31 31 30 31 30 31 31 >> 28 59 89 120 150 181 212 242 273 303 334 365 >> >> Finally, I create the results. >> >> [yr=:ya-yg NB. number of years >> 12 >> >> [elapsed=: -/ todayno"_1 afterbday,: ya,}.gbday NB. days since the >> birthday >> 230 >> [mr=: +/ elapsed > daysFebFirst NB. number of months >> 7 >> [dr=: (<:mr){ elapsed - daysFebFirst >> 18 >> yr,mr,dr >> 12 7 18 >> >> And for the case of a date before the birthday Jan 31st 2014 we get >> >> [feb=: 28 + leap yb NB. No change since 2013 is not a leap year >> 28 >> [yr=:yb-yg NB. number of years >> 11 >> >> [elapsed=: -/ todayno"_1 beforebday ,: yb ,}.gbday NB. days since the >> previous birthday >> 363 >> [mr=: +/ elapsed > daysFebFirst NB. number of months >> 11 >> [dr=: (<:mr){ elapsed - daysFebFirst >> 29 >> yr,mr,dr >> 11 11 29 >> >> Cheers, bob >> >> On Sep 20, 2014, at 10:58 AM, Linda Alvord <[email protected]> wrote: >> >>> The J forum is my elementary school set of sub imjects. What you suggest >> is >>> exactly what I would hope would happen in a J classroom. All would have >> J. >>> All could experiment and exchange ideas. Hopefully they would have >> solutions >>> they believe were correct. Then they could explain their thinking to the >>> entire class and the teacher. At this point in the process, the teacher >>> would not be a leader but a follower. >>> >>> Possibly I am dreaming.... >>> >>> Linda >>> >>> -----Original Message----- >>> From: [email protected] >>> [mailto:[email protected]] On Behalf Of robert >>> therriault >>> Sent: Saturday, September 20, 2014 1:20 PM >>> To: [email protected] >>> Subject: Re: [Jprogramming] Weekend Puzzle - Age of Groundhog born 2002 2 >> 2 >>> >>> Hi Linda, >>> >>> If you are looking for a way to get learners to be interested in the >>> problem, why not use the very model of learning that we are using here? >>> >>> You put a problem out to your class (forum) and see how the responses go. >>> You as the teacher (moderator) are free to choose the rules, knowing that >>> the students (participants) are able to put their attention elsewhere if >>> things are not kept interesting. It is a style of learning that we use on >>> these forums everyday and it seems to work for us. >>> >>> What might not work as well is going into the class and showing them how >> to >>> solve the problem, as this takes away so much from the experience that we >>> enjoy when we are learning. The challenge for the teacher is not so much >>> coming up with a solution, as it is to make sure that they are engaging as >>> many students as possible. This is especially true at the extremes of the >>> class' abilities - both the really adept and those that are struggling >> with >>> the concepts are where teachers are most valuable. >>> >>> Just my two bits, but I would probably just start with the question of >> 'how >>> would you measure time in metric?' and use that as a way to explore all >> the >>> ways that you would count and group the types of time and how they way we >>> measure time can be pretty crazy and why it might be good if we could get >>> computers to do the work of taking care of the crazy systems that we have >>> set up. Where the class would take this in terms of topic is wide open, as >> a >>> teacher you just make sure that as the core concepts arise they are >> covered >>> accurately. >>> >>> Cheers, bob >>> >>> ps. The quickest way to get me to care about the age of your groundhog is >> to >>> have one of my classmates start trying to figure it out, but my learning >> is >>> usually socially motivated. :-) >>> >>> On Sep 20, 2014, at 9:35 AM, Joe Bogner <[email protected]> wrote: >>> >>>> Hi Linda >>>> >>>> The solution is quite simple and uses one built verb from an addon. I >>>> posted it with the solution masked so others can try it on their own >>>> without accidentally seeing mine >>>> >>>> The actual solution is the result of this: >>>> >>>> |. solution2 >>>> On Sep 20, 2014 11:54 AM, "Linda Alvord" <[email protected]> wrote: >>>> >>>>> We are talking children here. >>>>> >>>>> Onyadot. emiTetaDot, ffiDst, onyadot, emiTetaDot, emitetad, sepyt and >>>>> eriuqer are all denied! >>>>> >>>>> How about using +, -, *, ?, %: and that sort of thing. >>>>> >>>>> I must admit you did get the right answer! >>>>> >>>>> You can also get a second chance. >>>>> >>>>> Cheers, Linda >>>>> >>>>> >>>>> >>>>> -----Original Message----- >>>>> From: [email protected] >>>>> [mailto:[email protected]] On Behalf Of Joe >>> Bogner >>>>> Sent: Saturday, September 20, 2014 9:10 AM >>>>> To: [email protected] >>>>> Subject: Re: [Jprogramming] Weekend Puzzle - Age of Groundhog born 2002 >> 2 >>> 2 >>>>> >>>>> solution... >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> 1 >>>>> 2 >>>>> 3 >>>>> 4 >>>>> 5 >>>>> >>>>> >>>>> lightly obfuscated for someone who doesn't want the solution >>>>> >>>>> >>>>> solution1=: 0 : 0 >>>>> >>>>> )2 2 2002 onyadot emiTetaDot( ffiDst )02 9 4102 onyadot emiTetaDot( >>>>> >>>>> 'emitetad/sepyt' eriuqer >>>>> >>>>> ) >>>>> >>>>> >>>>> >>>>> to run: >>>>> >>>>> >>>>> 0!:1 |. solution1 >>>>> >>>>> >>>>> >>>>> solution2 =: 0 : 0 >>>>> >>>>> )2 2 2002( ffiDst )02 9 4102( >>>>> >>>>> 'emitetad/sepyt' eriuqer >>>>> >>>>> ) >>>>> >>>>> >>>>> 0!:1 |. solution2 >>>>> >>>>> >>>>> >>>>> note: both take advantage of a addon. solution1 uses todayno just >> because >>>>> it was stated in the problem but solution2 is what I'd really use >>>>> >>>>> >>>>> >>>>> On Sat, Sep 20, 2014 at 4:54 AM, Linda Alvord <[email protected]> >>>>> wrote: >>>>> >>>>>> Using the verb todayno which provides the number of days since the >>>>>> beginning of 1800, write what you need to find the age today of a >>>>>> groundhog >>>>>> born on 2002 2 2. >>>>>> >>>>>> >>>>>> >>>>>> todayno 2014 9 2014 >>>>>> >>>>>> 80418 >>>>>> >>>>>> >>>>>> >>>>>> 2014 9 20 age 2002 2 2 >>>>>> >>>>>> 12 7 18 >>>>>> >>>>>> >>>>>> >>>>>> His age is 12 years, 7 months and 18 days. Use simple J. Check that >>>>> your >>>>>> solution provides a correct answer for you birthday. >>>>>> >>>>>> >>>>>> >>>>>> Have a pleasant weekend. >>>>>> >>>>>> >>>>>> >>>>>> Linda >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> ---------------------------------------------------------------------- >>>>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>>>> >>>>> ---------------------------------------------------------------------- >>>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>>> >>>>> ---------------------------------------------------------------------- >>>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>>> >>>> ---------------------------------------------------------------------- >>>> For information about J forums see http://www.jsoftware.com/forums.htm >>> >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >>> >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
