aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-211/luca-ferrari/postgresql/ch-1.sql36
1 files changed, 36 insertions, 0 deletions
diff --git a/challenge-211/luca-ferrari/postgresql/ch-1.sql b/challenge-211/luca-ferrari/postgresql/ch-1.sql
new file mode 100644
index 0000000000..23a33447de
--- /dev/null
+++ b/challenge-211/luca-ferrari/postgresql/ch-1.sql
@@ -0,0 +1,36 @@
+--
+-- Perl Weekly Challenge 211
+-- Task 1
+--
+-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-211/>
+--
+
+CREATE SCHEMA IF NOT EXISTS pwc211;
+
+CREATE OR REPLACE FUNCTION
+pwc211.task1_plpgsql( a int[][])
+RETURNS bool
+AS $CODE$
+DECLARE
+ current_row int := 1;
+ current_col int := 1;
+ previous_val int := NULL;
+BEGIN
+ WHILE current_row <= array_length( a, 1 ) LOOP
+ IF current_row > array_length( a, 2 ) THEN
+ RETURN false;
+ END IF;
+
+ IF previous_val IS NULL THEN
+ previous_val := a[ current_row ][ current_row ];
+ ELSIF previous_val <> a[ current_row ][ current_row ] THEN
+ RETURN false;
+ END IF;
+
+ current_row := current_row + 1;
+ END LOOP;
+
+ RETURN true;
+END
+$CODE$
+LANGUAGE plpgsql;