MathGroup Archive 2005

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

Search the Archive

Re: opposite of partition


On May 31, 2005, at 5:00 AM, Guy Israeli wrote:

> Hi,
>
> How do I do the opposite of partition quickly?
>
> for example:
>
> l1= {{a, b, c, d, e}, {f, g, h, i, j}, {k, l, m, n, o}, {p, q, r,  
> s, t}, {u,
> v, w,
> x, y}}
>
> and then if I partition it to blocks will result in
>
> {{{{a, b}, {f, g}}, {{c, d}, {h, i}}}, {{{k, l}, {p, q}}, {{m, n},  
> {r, s}}}}
>
> flattening it won't help, and its messy to do it by taking all  
> first lines
> of the blocks, then second..
>
> How can I do it quickly?
>
>
>
> Thanks,
>
> Guy


Hi,

This seems to do what you want:

   revPartition[m_] := Flatten[ Map[ Map[Flatten, #] &, Map 
[Transpose, m] ], 1]

or, if you prefer,

   revPartition[m_] := Flatten[#, 1] &@(Flatten /@ # &) /@ Transpose / 
@ m


Then, e.g.,

   revPartition[{{{{a, b}, {f, g}}, {{c, d}, {h, i}}}, {{{k, l}, {p,  
q}}, {{m, n}, {r, s}}}}]

   --->   {{{a, b, c, d}, {f, g, h, i}}, {{k, l, m, n}, {p, q, r, s}}}



Selwyn Hollis
http://www.appliedsymbols.com


  • Prev by Date: Re: Block vs Module
  • Next by Date: Re: reducing the time of constructing a List
  • Previous by thread: Re: opposite of partition
  • Next by thread: Re: opposite of partition