[Date Index]
[Thread Index]
[Author Index]
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**
| |