Re: 2D pattern matching
- To: mathgroup at smc.vnet.net
- Subject: [mg77276] Re: 2D pattern matching
- From: "Michael Weyrauch" <michael.weyrauch at gmx.de>
- Date: Wed, 6 Jun 2007 07:09:45 -0400 (EDT)
- References: <f43dm5$f8$1@smc.vnet.net>
Hello,
here is an example to do such things...
m = {{0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 1, 1, 0},
{0, 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}//MatrixForm
o = m /. {a___List, {b___, 1, 1, c___}, {d___, 1, 1, e___}, f___List} /;
Length[{b}] == Length[{d}] ->
{a, {b, 2, 2, c}, {d, 2, 2, e}, f}//MatrixForm
The condition on the pattern tries to make sure that you really only replace 2 by 2 submatrices.
Michael
<alexxx.magni at gmail.com> schrieb im Newsbeitrag news:f43dm5$f8$1 at smc.vnet.net...
> hi everybody,
>
> do you know how to do a pattern match involving 2D matrices?
> If e.g. you have a list
>
> a = {{0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 1, 1, 0}, {0,
> 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}
>
> i.e.
> 0 0 0 0 0 0
> 0 1 0 0 0 0
> 0 1 0 1 1 0
> 0 0 0 1 1 0
> 0 0 0 0 0 0
>
> is it possible for me to write a rule by which I am able to find the
> 2x2 square of 1's, and replace it with something else?
>
> I studied all I could on patterns, but didnt find an answer...
>
> thanks for ANY help
>
> Alessandro Magni
>
>