Re: opposite of partition
- To: mathgroup at smc.vnet.net
- Subject: [mg57568] Re: [mg57539] opposite of partition
- From: Selwyn Hollis <sh2.7183 at earthlink.net>
- Date: Wed, 1 Jun 2005 06:02:21 -0400 (EDT)
- References: <200505310900.FAA03466@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
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