Thread: Test for array slice?
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
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
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
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