[Haskell-cafe] How to do the "permutation and combination" thing?

Magicloud Magiclouds magicloud.magiclouds at gmail.com
Mon Mar 15 12:01:42 EDT 2010


Oh, that is not a precondition. So the answer of yours are correct. I
am working on permutations. I used it in a wrong way.

On Mon, Mar 15, 2010 at 4:39 PM, Daniel Fischer
<daniel.is.fischer at web.de> wrote:
> Am Montag 15 März 2010 08:37:20 schrieb Magicloud Magiclouds:
>> Sorry, I did not make it clear, since I did not know how to say this
>> in technical terms.
>> With comprehension, I could get all the possibilities that "draw one
>> elem from each list and put them together". But consider this: for
>> example, there are two types of pet, dog and cat. And there are two
>> persons, him and her. So "how many kinds of matches are there
>> (orderless)?" The answer is two: "him with dog and her with cat, him
>> with cat and her with dog". So
>> f [a, b, c] [d, e, f] [g, h, i] =
>>   [ [ (a, d, g), (b, e, h), (c, f, i) ]
>>   , [ (a, d, g), (b, e, i), (c, f, h) ]
>>   , [ (a, d, h), (b, e, i), (c, f, g) ]
>>   , [ (a, d, h), (b, e, g), (c, f, i) ]
>>   , [ (a, d, i), (b, e, g), (c, f, h) ]
>>   , [ (a, d, i), (b, e, h), (c, f, g) ]
>>   ... ]
>>
>
> In both, your verbal example and the pseudo-code example, all the groups
> have the same number of members (equal to the number of groups, which may
> or may not be coincidental).
> Is that a precondition, that all groups have the same number of members?
> If so, would the desired result for three groups of two members each be
>
> f3 [a,b] [c,d] [e,f] =
>  [ [ (a,c,e), (b,d,f) ]
>  , [ (a,c,f), (b,d,e) ]
>  , [ (a,d,e), (b,c,f) ]
>  , [ (a,d,f), (b,c,e) ]
>  ]
>
> and for two groups of three members each
>
> f2 [a,b,c] [d,e,f] =
>  [ [ (a,d), (b,e), (c,f) ]
>  , [ (a,d), (b,f), (c,e) ]
>  , [ (a,e), (b,d), (c,f) ]
>  , [ (a,e), (b,f) , (c,d) ]
>  , [ (a,f), (b,d), (c,e) ]
>  , [ (a,f), (b,e), (c,d) ]
>  ]
>
> ?
>
> In that case, look at Data.List.permutations and the zipN functions.
>
>



-- 
竹密岂妨流水过
山高哪阻野云飞


More information about the Haskell-Cafe mailing list