MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

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
>>
>>
>>
>


  • Prev by Date: Re: Re: Mathematica scoping / contexts / variable localization
  • Next by Date: Re: Re: I broke the sum into pieces
  • Previous by thread: Re: compositions with the restricted set of integers
  • Next by thread: Re: compositions with the restricted set of integers