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

```

• Prev by Date: Re: Two Version 6.0 Package Problems
• Next by Date: Re: v6: weird cursor behaviour
• Previous by thread: Re: 2D pattern matching
• Next by thread: Best practice for Mathematica package development