Thread: Test for array slice?

Test for array slice?

From
Peter Fein
Date:
Hi-

I want to do something like this (pardon my pseudocode):

A=ARRAY[4, 5, 6, 7, 8]
B=ARRAY[5, 6]

is_sliceof(A, B), i.e., there exists a slice of A that equals B.  My
best thought ATM is to convert both to strings and use pattern matching
- any better ideas?

--Pete


Re: Test for array slice?

From
Joe Conway
Date:
Peter Fein wrote:
> I want to do something like this (pardon my pseudocode):
>
> A=ARRAY[4, 5, 6, 7, 8]
> B=ARRAY[5, 6]
>
> is_sliceof(A, B), i.e., there exists a slice of A that equals B.  My
> best thought ATM is to convert both to strings and use pattern matching
> - any better ideas?

I can't think of a really good way to do that directly in Postgres, but
I'd bet (still not sure though) there is a way in R.
   http://www.r-project.org/index.html
If so, you could use PL/R:
   http://www.joeconway.com/plr/

HTH,

Joe

Re: Test for array slice?

From
Sean Davis
Date:
On Jun 3, 2005, at 12:32 PM, Joe Conway wrote:

> Peter Fein wrote:
>> I want to do something like this (pardon my pseudocode):
>> A=ARRAY[4, 5, 6, 7, 8]
>> B=ARRAY[5, 6]
>> is_sliceof(A, B), i.e., there exists a slice of A that equals B.  My
>> best thought ATM is to convert both to strings and use pattern
>> matching
>> - any better ideas?
>
> I can't think of a really good way to do that directly in Postgres,
> but I'd bet (still not sure though) there is a way in R.
>   http://www.r-project.org/index.html
> If so, you could use PL/R:
>   http://www.joeconway.com/plr/

This is probably also easy in perl and python as well.

Sean


Re: Test for array slice?

From
Peter Fein
Date:
Sean Davis wrote:
>
> On Jun 3, 2005, at 12:32 PM, Joe Conway wrote:
>
>> Peter Fein wrote:
>>
>>> I want to do something like this (pardon my pseudocode):
>>> A=ARRAY[4, 5, 6, 7, 8]
>>> B=ARRAY[5, 6]
>>> is_sliceof(A, B), i.e., there exists a slice of A that equals B.  My
>>> best thought ATM is to convert both to strings and use pattern matching
>>> - any better ideas?
>>
>>
>> I can't think of a really good way to do that directly in Postgres,
>> but I'd bet (still not sure though) there is a way in R.
>>   http://www.r-project.org/index.html
>> If so, you could use PL/R:
>>   http://www.joeconway.com/plr/
>
>
> This is probably also easy in perl and python as well.

Actually, I can't think of a great way to do this in python.  Maybe
something clever with iterators or list.index...  My elements will all
be integers, so the string conversion won't cause any trouble - regexps
seem to be the way to go.  Inefficient, since it needs more comparisons
(by character) than comparing ints would, but at least it'll be at C
speed. ;) Thanks all.

--
Peter Fein                 pfein@pobox.com                 773-575-0694

Basically, if you're not a utopianist, you're a schmuck. -J. Feldman