aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-196/luca-ferrari/postgresql/ch-2.plperl23
1 files changed, 23 insertions, 0 deletions
diff --git a/challenge-196/luca-ferrari/postgresql/ch-2.plperl b/challenge-196/luca-ferrari/postgresql/ch-2.plperl
new file mode 100644
index 0000000000..2608c1a841
--- /dev/null
+++ b/challenge-196/luca-ferrari/postgresql/ch-2.plperl
@@ -0,0 +1,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;