aboutsummaryrefslogtreecommitdiff
path: root/challenge-196/luca-ferrari/postgresql/ch-2.plperl
blob: 2608c1a8418b2358bbee8a8313f7d8e16e2ee234 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- Perl Weekly Challenge 196
-- Task 2

CREATE SCHEMA IF NOT EXISTS pwc196;

CREATE OR REPLACE FUNCTION
pwc196.task2_plperl( int[] )
RETURNS SETOF int[]
AS $CODE$
  my ( $array ) = $_[0];
  my ( $start, $end ) = ( 0, 0 );

  while ( $start < $array->@* ) {
     $end = $start;
     $end++ while ( $end < $array->@* &&   $array->[ $end + 1 ] == $array->[ $end ] + 1 );
     return_next( [ $start, $end ] ) if ( $end > $start );
     $start += $end + 1;
  }

return undef;
  
$CODE$
LANGUAGE plperl;