# Difference between revisions of "Find"

(Created page with "<apll> Z←L⍷R </apll> <p> <br> <b>Find</b> looks for patterns <apll>R</apll> in <apll>L</apll>. <br> It returns a simple boolean array with the same shape as <apll>L</apll>...") |
|||

Line 3: | Line 3: | ||

</apll> | </apll> | ||

<p> | <p> | ||

− | <br> <b>Find</b> looks for patterns <apll> | + | <br> <b>Find</b> looks for patterns <apll>L</apll> in <apll>R</apll>. |

− | <br> It returns a simple boolean array with the same shape as <apll> | + | <br> It returns a simple boolean array with the same shape as <apll>R</apll>. |

<br> <br> | <br> <br> | ||

<apll>L</apll> and <apll>R</apll> are arbitrary arrays. | <apll>L</apll> and <apll>R</apll> are arbitrary arrays. | ||

But to be useful, | But to be useful, | ||

− | the rank of <apll> | + | the rank of <apll>L</apll> |

− | should not be more than the rank of <apll> | + | should not be more than the rank of <apll>R</apll>, |

and both arguments should have the same type | and both arguments should have the same type | ||

(either both character or both numeric). | (either both character or both numeric). | ||

<br> <br> | <br> <br> | ||

− | If <apll> | + | If <apll>L</apll> is a scalar, |

− | then <apll>Z←L⍷R ←→ | + | then <apll>Z←L⍷R ←→ R∊L</apll>. |

<br/> | <br/> | ||

− | If <apll> | + | If <apll>L</apll> is not a scalar, |

then it represents a contiguous pattern, | then it represents a contiguous pattern, | ||

− | which may or may not be found in one or more places in <apll> | + | which may or may not be found in one or more places in <apll>R</apll>. |

<br> <br> | <br> <br> | ||

If the arguments are numeric, | If the arguments are numeric, | ||

Line 28: | Line 28: | ||

<apll> | <apll> | ||

− | <br/> | + | <br/> R←3 8⍴'thirteenfourteenfifteen ' |

− | <br/> | + | <br/> R |

<br/> thirteen | <br/> thirteen | ||

<br/> fourteen | <br/> fourteen | ||

Line 35: | Line 35: | ||

<br> <br> | <br> <br> | ||

− | <br/> | + | <br/> 't'⍷R |

<br/> 1 0 0 0 1 0 0 0 | <br/> 1 0 0 0 1 0 0 0 | ||

<br/> 0 0 0 0 1 0 0 0 | <br/> 0 0 0 0 1 0 0 0 | ||

Line 41: | Line 41: | ||

<br> <br> | <br> <br> | ||

− | <br/> | + | <br/> 'teen'⍷R |

<br/> 0 0 0 0 1 0 0 0 | <br/> 0 0 0 0 1 0 0 0 | ||

<br/> 0 0 0 0 1 0 0 0 | <br/> 0 0 0 0 1 0 0 0 |

## Revision as of 15:51, 4 December 2016

Z←L⍷R

**Find** looks for patterns L in R.

It returns a simple boolean array with the same shape as R.

L and R are arbitrary arrays.
But to be useful,
the rank of L
should not be more than the rank of R,
and both arguments should have the same type
(either both character or both numeric).

If L is a scalar,
then Z←L⍷R ←→ R∊L.

If L is not a scalar,
then it represents a contiguous pattern,
which may or may not be found in one or more places in R.

If the arguments are numeric,
then the result is sensitive to ⎕CT.

Examples:

R←3 8⍴'thirteenfourteenfifteen '

R

thirteen

fourteen

fifteen

't'⍷R

1 0 0 0 1 0 0 0

0 0 0 0 1 0 0 0

0 0 0 1 0 0 0 0

'teen'⍷R

0 0 0 0 1 0 0 0

0 0 0 0 1 0 0 0

0 0 0 1 0 0 0 0