Re: array ordered
- To: mathgroup at smc.vnet.net
- Subject: [mg3178] Re: array ordered
- From: Jorma.Virtamo at vtt.fi (Jorma Virtamo)
- Date: Tue, 13 Feb 1996 02:29:16 -0500
- Sender: owner-wri-mathgroup at wolfram.com
TTCJ34A at prodigy.com (DR JOHN C ERB) wrote:
>
> I have six pieces of plastic of thickness:
> thick={0.48,0.71,1.41,3.45,5.61,13.49};
>
> By using these in various combinations
> (i.e., 1 piece, 2 pieces,... 6 pieces),
> I can have:
> numberthick={1,2,3,4,5,6};
> total = Apply[Plus,Map[Binomial[6,#]&,numbthick]];
> total = 63
> 63 different thickness.
>
> How can I use Mathematica to get an array, ordered by
> increasing thicknesses of plastic, giving the
> 63 different thicknesses, and combination of pieces
> needed to give each thickness?
>
Here is one solution:
First, form a list of all possible piece combinations,
In[1]:= piececombs=Flatten[Array[List,{2,2,2,2,2,2},0],5]
Out[1]=
{{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1},
{0, 0, 0, 0, 1, 0},
{0, 0, 0, 0, 1, 1},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 1},
{0, 0, 0, 1, 1, 0}, etc
where 1 (0) means that a piece is (is not) used in the combination.
There are 64 combinations, not 63, since the empty combination is
also included (of course, one can drop it by Drop[piececombs,1]).
Then prepend to each piece combination in the list its thickness and
finally sort the whole list:
In[2]:= Sort[{Plus @@ (#*thick), #}& /@ piececombs]//MatrixForm
Out[2]=
0 {0, 0, 0, 0, 0, 0}
0.48 {1, 0, 0, 0, 0, 0}
0.71 {0, 1, 0, 0, 0, 0}
1.19 {1, 1, 0, 0, 0, 0}
...
...
23.96 {0, 0, 1, 1, 1, 1}
24.44 {1, 0, 1, 1, 1, 1}
24.67 {0, 1, 1, 1, 1, 1}
25.15 {1, 1, 1, 1, 1, 1}
-- Jorma Virtamo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jorma Virtamo VTT Information Technology
phone: +358 0 456 5612 Telecommunications
fax: +358 0 455 0115 P.O. Box 1202
email: jorma.virtamo at vtt.fi FIN-02044 VTT
web: http://www.vtt.fi/tte/ Finland
==== [MESSAGE SEPARATOR] ====