MathGroup Archive 2001

[Date Index] [Thread Index] [Author Index]

Search the Archive

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
>
>
>




  • Prev by Date: Re: palettes "on top" (?)
  • Next by Date: RE: extracting elements from an expression
  • Previous by thread: Re: extracting elements from an expression
  • Next by thread: RE: extracting elements from an expression