with which model in Combinatorics in mind do you want that function? with or 
without repetition?

<http://en.wikipedia.org/wiki/Combinatorics#Permutation_with_repetition>    the 
order matters and each object can be chosen more than once
<http://en.wikipedia.org/wiki/Combinatorics#Permutation_without_repetition> the 
order matters and each object can be chosen only once
<http://en.wikipedia.org/wiki/Combinatorics#Combination_without_repetition> the 
order does not matter and each object can be chosen only once
<http://en.wikipedia.org/wiki/Combinatorics#Combination_with_repetition>    the 
order does not matter and each object can be chosen more than once




--------------------------------------------------
import Data.List

perm3_with_rep,perm3_without_rep,comb3_with_rep,comb3_without_rep :: [a] -> 
[(a, a, a)]
perm3_with_rep    es = [(x,y,z)|x<-es,y<-es,z<-es]
perm3_without_rep es = [(x,y,z)|let it s=zip s $ zipWith (++) (inits s) (tail $ 
tails s),(x,xr)<-it es,(y,yr)<-it xr,z<-yr]
comb3_with_rep    es = [(x,y,z)|let it=init.tails,xs@(x:_)<-it es,ys@(y:_)<-it 
xs,z<-ys]
comb3_without_rep es = [(x,y,z)|let it=init.tails,(x:xr)<-it es,(y:yr)<-it 
xr,z<-yr]

comb3_to_perm3 :: [(a, a, a)] -> [(a, a, a)]
comb3_to_perm3 xyz = concat[perm_without_rep [x,y,z]|(x,y,z)<-xyz]
--------------------------------------------------



- marc

Attachment: pgpjouD4QrpWb.pgp
Description: PGP signature

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to