aboutsummaryrefslogtreecommitdiff
path: root/challenge-202
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2023-01-30 10:11:12 +0100
committerLuca Ferrari <fluca1978@gmail.com>2023-01-30 10:11:12 +0100
commit4b3cc2f5422c01d581c64266d8ae42669ef97764 (patch)
tree1cb108ef868862f8aa07cb4f048a4346279e8d3a /challenge-202
parenta3574bb79c1a246e200dffbd87520f481d4be086 (diff)
downloadperlweeklychallenge-club-4b3cc2f5422c01d581c64266d8ae42669ef97764.tar.gz
perlweeklychallenge-club-4b3cc2f5422c01d581c64266d8ae42669ef97764.tar.bz2
perlweeklychallenge-club-4b3cc2f5422c01d581c64266d8ae42669ef97764.zip
Task 1 plpgsql
Diffstat (limited to 'challenge-202')
-rw-r--r--challenge-202/luca-ferrari/postgresql/ch-1.sql42
1 files changed, 42 insertions, 0 deletions
diff --git a/challenge-202/luca-ferrari/postgresql/ch-1.sql b/challenge-202/luca-ferrari/postgresql/ch-1.sql
new file mode 100644
index 0000000000..ddc906c223
--- /dev/null
+++ b/challenge-202/luca-ferrari/postgresql/ch-1.sql
@@ -0,0 +1,42 @@
+--
+-- Perl Weekly Challenge 202
+-- Task 1
+--
+-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-202/>
+--
+
+CREATE SCHEMA IF NOT EXISTS pwc202;
+
+CREATE OR REPLACE FUNCTION
+pwc202.task1_plpgsql( l int[] )
+RETURNS int
+AS $CODE$
+DECLARE
+ odds int[];
+ cur int;
+BEGIN
+ FOREACH cur IN ARRAY l LOOP
+ IF cur % 2 = 0 THEN
+ CONTINUE;
+ END IF;
+
+ IF array_length( odds, 1 ) = 0 OR odds IS NULL THEN
+ odds := odds || cur;
+ CONTINUE;
+ END IF;
+
+ IF odds[ array_length( odds, 1 ) ] + 2 <> cur THEN
+ CONTINUE;
+ END IF;
+
+ odds := odds || cur;
+ END LOOP;
+
+ IF array_length( odds, 1 ) >= 3 THEN
+ RETURN 1;
+ ELSE
+ RETURN 0;
+ END IF;
+END
+$CODE$
+LANGUAGE plpgsql;