Re: Yet another simple question.
- To: mathgroup at smc.vnet.net
- Subject: [mg47187] Re: Yet another simple question.
- From: gtsavdar at auth.gr (George)
- Date: Mon, 29 Mar 2004 04:22:34 -0500 (EST)
- References: <c438uh$emi$1@smc.vnet.net> <c45nmi$s3g$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
drbob at bigfoot.com (Bobby R. Treat) wrote in message news:<c45nmi$s3g$1 at smc.vnet.net>... > The statement Q=Which[...] is executed at every step of the Do loop, > so Q has the last value it was assigned. That's Null if fff[d+7] isn't > 1, no matter what happened in earlier iterations. > > If[fff[x]==1,Q=x] works much better, since it sets Q only when x has > the right value. Which can be used instead of If, but it really should > be reserved for applying more than one test. > > The following stops the Do loop when you reach the x-value you want: > > q = Catch[Do[fff[x] == 1 && Throw[x], {x, d + 1, d + 7}]] > > However, there's no need for any loop at all. For fff[d] = > 1,2,3,4,5,6,7 you need to add 7,6,5,4,3,2,1 to d, so q = d+8-fff[d] > > D is a protected, built-in symbol for differentiation. It's > recommended that you never start your own variables with capital > letters; it avoids all those conflicts. > > In addition, fff isn't a function of day alone as the pattern > indicates; it also depends on mr and yr. It's usually best to reflect > that in the pattern: > > dayOfWeek[day_, month_, year_] = Mod[day + 2*month + Quotient[3*( > month + 1), 5] + year + 2 + Quotient[year, 4] + > Quotient[year, 400] - Quotient[year, 100], 7, 1]; > #+8-dayOfWeek[#,3,2004]&/@Range[31] > > {7,7,7,7,7,7,14,14,14,14,14,14,14,21,21,21,21,21,21,21,28,28,28,28,28,28,28,\ > 35,35,35,35} > > (The result for March 28-31, 2004 is March 35th, but presumably you're > fixing that elsewhere.) > > I added the final argument of Mod so that you wouldn't get 0 when you > meant 1. Or maybe you do mean Sunday to be 0; I don't know. Your Do > loop is looking for Sunday, isn't it? Yes Sunday. Clever thing that you've made with q. I'm too uncomfortable with Mathematica now to think such things. Thank you very much.