Re: Problem with Which
- To: mathgroup at smc.vnet.net
- Subject: [mg74102] Re: Problem with Which
- From: "Dana DeLouis" <dana.del at gmail.com>
- Date: Sat, 10 Mar 2007 06:50:40 -0500 (EST)
Hi. Just an idea. If you had 1 or 2 more variables, your function would be
very long. If your variables represented binary digits, you may be able to
shorten the code.
I was thinking of some sort of Rank function from Combinatorica, but I don't
think there is one for this type of conversion. Here are some ideas...
Reverse[Select[Range[63],
Count[IntegerDigits[#1, 2], 1] == 2 & ]]
{48, 40, 36, 34, 33, 24, 20, 18, 17, 12, 10, 9, 6, 5, 3}
Unfortunately, there is no easy formula...
http://www.research.att.com/~njas/sequences/A018900
Fx[Ts_, Th_, Tr_, f_, w_, i_] := Module[{t},
t = Boole[Map[NumericQ, {Ts, Th, Tr, f, w, i}]];
If[Count[t, 1]
≠ 2, "Error", Mod[1414254666747063480272674439478, 6*FromDigits[t,
2] + 29]]
]
Fx2[Ts_, Th_, Tr_, f_, w_, i_] := Module[{t, p = Permutations[{1, 1, 0,
0, 0, 0}]},
t = Boole[Map[NumericQ, {Ts, Th, Tr, f, w, i}]];
If[Count[t, 1] ≠ 2, "Error", Position[p, t][[1, 1]]]
]
Or, not even use Boole....
Fx3[Ts_, Th_, Tr_, f_, w_, i_] :=
Module[{t, p = Permutations[{True, True, False, False,
False, False}]},
t = NumericQ /@ {Ts, Th, Tr, f, w, i};
If[Count[t, True] != 2, "Error", Position[p, t][[1,
1]]]]
Fx[a, b, c, d, 1, 2]
15
Fx2[1, 2, a, b, c, d]
1
= = = = =
HTH
Dana DeLouis
XP and Mathematica 5.2
> AH[Ts_,Th_,Tr_,f_,w_,i_]:=(
> Which[NumericQ[Ts]&&NumericQ[Th],tipo=1,
> NumericQ[Ts]&&NumericQ[Tr],tipo=2,
> NumericQ[Ts]&&NumericQ[f],tipo=3,
> NumericQ[Ts]&&NumericQ[w],tipo=4,
> NumericQ[Ts]&&NumericQ[i],tipo=5,
> NumericQ[Th]&&NumericQ[Tr],tipo=6,
> NumericQ[Th]&&NumericQ[f],tipo=7,
> NumericQ[Th]&&NumericQ[w],tipo=8,
> NumericQ[Th]&&NumericQ[i],tipo=9,
> NumericQ[Tr]&&NumericQ[f],tipo=10,
> NumericQ[Tr]&&NumericQ[w],tipo=11,
> NumericQ[Tr]&&NumericQ[i],tipo=12,
> NumericQ[f]&&NumericQ[w],tipo=13,
> NumericQ[f]&&NumericQ[i],tipo=14,
> NumericQ[w]&&NumericQ[i],tipo=15];
> tipo)