diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2025-07-24 14:29:01 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2025-07-24 15:14:16 +0200 |
| commit | 1afc193f74481968858e2692a54fab5ea7c00c86 (patch) | |
| tree | e8a8ab51f9359a401b5754f753f89401930ee2bc /challenge-331/luca-ferrari/plpgsql/ch-2.sql | |
| parent | 864b54240022daa9c51f4d30e531f1950d3d348c (diff) | |
| download | perlweeklychallenge-club-1afc193f74481968858e2692a54fab5ea7c00c86.tar.gz perlweeklychallenge-club-1afc193f74481968858e2692a54fab5ea7c00c86.tar.bz2 perlweeklychallenge-club-1afc193f74481968858e2692a54fab5ea7c00c86.zip | |
PWC 331
Task 1 Raku done
Task 2 Raku done
Task 1 PL/Perl done
Task 2 PL/Perl done
Task 1 PL/PgSQL done
Task 2 PL/PgSQL done
Task 1 PL/Java done
Task 2 PL/Java done
Task 1 Python done
Task 2 Python done
Diffstat (limited to 'challenge-331/luca-ferrari/plpgsql/ch-2.sql')
| -rw-r--r-- | challenge-331/luca-ferrari/plpgsql/ch-2.sql | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/challenge-331/luca-ferrari/plpgsql/ch-2.sql b/challenge-331/luca-ferrari/plpgsql/ch-2.sql new file mode 100644 index 0000000000..2b70f3e55e --- /dev/null +++ b/challenge-331/luca-ferrari/plpgsql/ch-2.sql @@ -0,0 +1,48 @@ +-- +-- Perl Weekly Challenge 331 +-- Task 2 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-331> +-- + +CREATE SCHEMA IF NOT EXISTS pwc331; + +CREATE OR REPLACE FUNCTION +pwc331.task2_plpgsql( l text, r text) +RETURNS boolean +AS $CODE$ +DECLARE + diffs int := 0; +BEGIN + IF l = r THEN + RETURN true; + END IF; + + IF length( l ) != length( r ) THEN + RETURN false; + END IF; + + WITH + lt AS ( + SELECT lc::text, row_number() over () as lr + FROM regexp_split_to_table( l, '' ) lc + ) + , rt AS ( + SELECT rc::text, row_number() over () as rr + FROM regexp_split_to_table( r, '' ) rc + ) + SELECT count(*) + into diffs + FROM lt, rt + WHERE rr = lr + AND lc <> rc + ; + + IF diffs > 2 THEN + RETURN false; + ELSE + RETURN true; + END IF; + +END +$CODE$ +LANGUAGE plpgsql; |
