Re: removing sublist . Again and Different
- To: mathgroup at smc.vnet.net
- Subject: [mg56349] Re: [mg56305] removing sublist . Again and Different
- From: János <janos.lobb at yale.edu>
- Date: Fri, 22 Apr 2005 06:23:42 -0400 (EDT)
- References: <200504210936.FAA05089@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Apr 21, 2005, at 5:36 AM, giampi1960 wrote:
> hello i read borges2003xx at yahoo.it meassage :
>
>
>> i'm a newbie. How implement the _faster functon_ which removes in a
>> list every element that are a subelement.
>> which means
>> f[x]:= {..,{1,2,3,4},..,{2,3},..} removes {2,3}.
>> thanx a lot.
>> giorgio borghi
>
>
> i ask your help for faster way to do the opposite
> f[x]:= {..,{1,2,3,4},..,{2,3},..} removes {1,2,3,4}.
>
> best regards
>
> giampiero
In[123]:=
result = {}
In[124]:=
lst = Table[Table[Random[
Integer, {1, 9}],
{i, 1, Random[Integer,
{1, 9}]}], {j, 1, 10}]
Out[124]=
{{8, 1, 8}, {2}, {7, 5, 4, 2,
6}, {9, 2, 9, 9, 5, 6, 5,
8}, {3, 2, 7, 8, 1, 1},
{5, 5, 6, 4, 6, 7, 1, 2},
{4, 1}, {6, 4, 6, 7, 8, 3,
5, 5}, {1, 3, 3, 2, 2},
{9, 9, 2, 4, 6}}
In[125]:=
result = First[Last[
Reap[While[lst =!= {},
srtlst = Reverse[
Sort[lst]];
srtlstmost =
Most[srtlst];
srtlstlast =
Last[srtlst];
Sow[srtlstlast];
srtlstmostpart =
(Subsets[#1,
{Length[
srtlstlast]}] & ) \
/@ srtlstmost; lst =
Pick[srtlstmost,
(If[Length[
Intersection[#1,
Permutations[
srtlstlast]]] == 0,
True, False] & ) /@
srtlstmostpart]; ]]]\
]
Out[125]=
{{2}, {4, 1}, {8, 1, 8},
{6, 4, 6, 7, 8, 3, 5, 5}}
I used here Subsets, Permutations and Intersections to match up" who
is in who". Your criteria might be different, so feel free to change
those functions to yours. Fast or not ? It did away with a 1000
element list of lists in 0.10156 Second. I am sure the statements
inside the while can be collapsed more.... if I would have more time.
János
----------------------------------------------
Trying to argue with a politician is like lifting up the head of a
corpse.
(S. Lem: His Master Voice)
- References:
- removing sublist . Again and Different
- From: "giampi1960" <giampiero1960@yahoo.com>
- removing sublist . Again and Different