Re: compositions with the restricted set of integers
- To: mathgroup at smc.vnet.net
- Subject: [mg105166] Re: [mg105143] compositions with the restricted set of integers
- From: michael partensky <partensky at gmail.com>
- Date: Mon, 23 Nov 2009 06:51:14 -0500 (EST)
- References: <200911221110.GAA10476@smc.vnet.net>
Thanks, Leonid, this is terrific. I never used Tally before. Should practice more - turns out, it also allows for different tests! In addition, I discovered your book http://www.mathprogramming-intro.org/book/Book.html - will go through it. Best. Michael On Sun, Nov 22, 2009 at 9:10 AM, Leonid Shifrin <lshifr at gmail.com> wrote: > Hi, Michael. > > Your solution is indeed very memory - hungry due to the mapping of > Permutations, as you mentioned. The total number of permutations can be > easily deduced from the list of multiplicities of elements in a given > partition: n!/(n1!n2!...nk!), where n1, ..., nk are multiplicities of > elements, and n is the length of the partition: n=n1+...+nk. The > multiplicities can be obtained by Tally. The following modification can be > realistically used in a much wider region of the problem's parameter space > than your original one, and may possibly serve your needs. > > In[1]:= > Clear[outsNew]; > outsNew[sum_, thr_] := > Total[Factorial[Length[#]]/ > Times @@ Factorial[Tally[#][[All, 2]]] & /@ > Cases[IntegerPartitions[sum, thr, {1, 2, 3, 4, 5, 6}], > Table[_, {thr}]]]; > > > For example: > > In[2]: = > outsNew[53, 25] // Timing > > Out[2] = > > {0.05, 247679998965100} > > > Regards, > Leonid > > > > > On Sun, Nov 22, 2009 at 3:10 AM, michael partensky <partensky at gmail.com>wrote: > >> IntegerPartitions has a useful option restricting the values of >> partitions. >> For example, IntegerPartitions[6,2,{1,2,3,4,5,6}] . Does it exist for >> Compositions? >> >> What I am looking for is a substitute for a lengthy and inefficient >> approach described below. We through n dice. How many outcomes >> *outs*correspond to the face total equal >> *sum*? >> I am aware about the recursive approach, but prefer to describe it in >> terms >> of integer partitioning (or compositions). >> *Here is my intellectually insulting solution:* >> >> outs[sum_, thr_] := >> Length[Flatten[ >> Permutations /@ >> Cases[IntegerPartitions[sum, thr, {1, 2, 3, 4, 5, 6}], >> Table[_, {thr}]], 1]]; >> >> Mapping with permutations seems especially silly. >> Is there a version of Compositions with the similar restrictive option >> ({1, >> 2, 3, 4, 5, 6})? >> I would appreciate any other suggestions as well. >> >> Thanks >> Michael >> >> >> >
- References:
- compositions with the restricted set of integers
- From: michael partensky <partensky@gmail.com>
- compositions with the restricted set of integers