Re: Yet another simple question.
- To: mathgroup at smc.vnet.net
- Subject: [mg48127] Re: Yet another simple question.
- From: Thomas Burton <tburton at brahea.com>
- Date: Fri, 14 May 2004 00:12:26 -0400 (EDT)
- Organization: Brahea Consulting
- References: <c438uh$emi$1@smc.vnet.net>
- Reply-to: tburton at brahea.com
- Sender: owner-wri-mathgroup at wolfram.com
On Fri, 26 Mar 2004 21:02:41 -1000, George wrote
(in message <c438uh$emi$1 at smc.vnet.net>):
> fff[day_] = Mod[day + 2*mr + Quotient[3*(mr + 1), 5] + yr + 2 + Quotient[yr,
> 4] + Quotient[yr, 400] - Quotient[yr, 100], 7];
> ...
> Do[Q = Which[fff[x] == 1, x], {x, D + 1, D + 7, 1}]
Examine the on-line help for Which. You'll see that you would need to embed
the Do loop inside Which, not outside as you have it. The problem with that
is, Do doesn't produce output! Instead of Do, you need Table or Range. But
even so, getting the output of Table or Range into the correct form for Which
is a bit tough for a new user. Select is much easier to use in this
application:
In[83]:=
Block[{mr = 1, yr = 2, D = 3},
Select[Range[D + 1, D + 7], fff[#1] == 1 & ]
]
Out[83]=
{8}
(Read about With, Module, & Block to see why I chose Block.) I recommend the
Boolean function
In[84]:=
f1[day_] = fff[day] == 1
Out[84]=
Mod[2 + day + 2 mr + yr + Quotient[3 (1 + mr), 5] +
Quotient[yr, 4] - Quotient[yr, 100] + Quotient[yr, 400],
7] == 1
to simplify the expression within Select:
In[85]:=
Block[{mr = 1, yr = 2, D = 3},
Select[Range[D + 1, D + 7], f1]
]
Out[85]=
{8}
We are using prompt assignments (fff = ...) and getting away with it. Until
you are more familiar with Mathematica, however, I recommend delayed
assignments (fff := ...) to functions of one or more arguments.
Finally, as with several other single capital letters, the symbol D is
reserved in the System context. (Type "?D" to see.) So you are overriding
it. A better choice would be "d". If you must use "D", I suggest (a)
changing it's first reference to
`D , where the first symbol is the left-handed apostrophe
and (b) reading about Contexts so you know what this means. But as I say,
it's simpler to use "d" instead.
Tom Burton