From e4adfc4dc5b53f1737acb03decbdfe29f53911a7 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Tue, 2 May 2023 13:38:53 +0200 Subject: Task 1 plpgsql done --- challenge-215/luca-ferrari/postgresql/ch-1.sql | 42 ++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 challenge-215/luca-ferrari/postgresql/ch-1.sql diff --git a/challenge-215/luca-ferrari/postgresql/ch-1.sql b/challenge-215/luca-ferrari/postgresql/ch-1.sql new file mode 100644 index 0000000000..fd7b028c30 --- /dev/null +++ b/challenge-215/luca-ferrari/postgresql/ch-1.sql @@ -0,0 +1,42 @@ +-- +-- Perl Weekly Challenge 215 +-- Task 1 +-- +-- See +-- + +CREATE SCHEMA IF NOT EXISTS pwc215; + +CREATE OR REPLACE FUNCTION +pwc215.task1_plpgsql( words text[] ) +RETURNS SETOF text +AS $CODE$ +DECLARE + current_word text; + sorted_word text; + current_letter text; +BEGIN + FOREACH current_word IN ARRAY words LOOP + /* + sorted_word := ''; + FOR current_letter IN SELECT l FROM regexp_split_to_table( current_word, '' ) l ORDER BY 1 LOOP + sorted_word := sorted_word || current_letter; + END LOOP; + */ + + SELECT string_agg( c, '' ) + INTO sorted_word + FROM ( SELECT c + FROM regexp_split_to_table( current_word, '' ) c + ORDER BY 1 + ) c; + + IF sorted_word = current_word THEN + RETURN NEXT current_word; + END IF; + END LOOP; + +RETURN; +END +$CODE$ +LANGUAGE plpgsql; -- cgit