Re: Permutations
- To: mathgroup at smc.vnet.net
- Subject: [mg65543] Re: Permutations
- From: "Valeri Astanoff" <astanoff at yahoo.fr>
- Date: Fri, 7 Apr 2006 06:14:20 -0400 (EDT)
- References: <e12s2k$j79$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
My solution :
In[1]:=swap[oldList_List, noSwap_List]:=
Module[{newList = oldList,sw},
Scan[(newList[[#]] = {newList[[#]]})&, noSwap];
sw[lis_List] := lis /. {a___,b_ /; AtomQ[b],
c_ /; AtomQ[c],d___} -> {a,{c,b},d};
Nest[sw,newList,(Length[newList]-Length[noSwap])/2]//
Flatten
];
In[2]:=swap[{a,b,c,d,e,f},{1,4}]
Out[2]={a,c,b,d,f,e}
In[3]:=swap[{a,b,c,d,e,f},{}]
Out[3]={b,a,d,c,f,e}
hth
V.Astanoff