Re: extracting elements from an expression
- To: mathgroup at smc.vnet.net
- Subject: [mg27678] Re: extracting elements from an expression
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Sun, 11 Mar 2001 04:04:22 -0500 (EST)
- References: <98cgas$fod@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Albert, m = {{{{1, 2}, {2, 3}}}, {{{4, 5}, {8, 9}}, {{6, 7}, {7, 10}}}, {{{11, 12}, {17, 18}}, {{13, 14}, {19, 20}}, {{15, 16}, {16, 21}}}}; Union[Flatten[m]]== {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} True If Union gives unwanted reordering then we can use the following elegant code is due to Carl Woll in place ot it. RemoveRepeats[x_List]:=Block[{i},i[n_]:=(i[n]=Sequence[]; n); i/@x]; Thus m1=m/._Integer:> Random[Integer,{1,21}] {{{{3,16},{10,5}}},{{{18,11},{12,19}},{{5,12},{16,6}}},{{{17,5},{18,19}},{{5 , 11},{9,9}},{{1,8},{14,10}}}} Flatten[m1] {3,16,10,5,18,11,12,19,5,12,16,6,17,5,18,19,5,11,9,9,1,8,14,10} RemoveRepeats[%] {3,16,10,5,18,11,12,19,6,17,9,1,8,14} -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 "Albert Maydeu-Olivares" <amaydeu at tinet.fut.es> wrote in message news:98cgas$fod at smc.vnet.net... > Dear all, > > I've spent several frustrating hours attempting to do something in principle > very simple. > After repeated failures I'm resorting to the group for help. > > Consider this simple expression > > m = {{{{1, 2}, {2, 3}}}, {{{4, 5}, {8, 9}}, {{6, 7}, {7, 10}}}, > {{{11, 12}, {17, 18}}, {{13, 14}, {19, 20}}, {{15, 16}, {16, 21}}}}; > m // TableForm > > I'm simply trying to obtain to obtain this list > > {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} > > using the positions' elements in m. This will do it the hard way > > Join[m[[1, 1, 1]], > Drop[m[[1, 1, 2]], 1], > m[[2, 1, 1]], > m[[2, 2, 1]], > m[[2, 1, 2]], > Drop[m[[2, 2, 2]], 1], > m[[3, 1, 1]], > m[[3, 2, 1]], > m[[3, 3, 1]], > m[[3, 1, 2]], > m[[3, 2, 2]], > Drop[m[[3, 3, 2]], 1]] > > I've failed to do it the easy way. Here's one of my failed attemps > > Table[If[i == j && k == 2, Drop[m[[i, j, k]], 1], m[[i, j, k]]], > {i, nvars}, {j, i}, {k, 2}] // Flatten > > which fails because I don't know how to control the k subscript > appropriately > as you can see by doing > > Flatten[Table[{i, j, k}, {i, nvars}, {j, i}, {k, 2}],2] > > Any help would be very much appreciated. > > Albert > > >