diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2021-11-08 13:25:32 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2021-11-08 13:25:32 +0100 |
| commit | 3ee103c948388738696b2ac4efcb038b80d8d2d9 (patch) | |
| tree | 9088966a8d48ba1b1678c6d7f164bc0ef94fd8ea | |
| parent | daf57f04732fc4bfbcab413729f348334a6338b6 (diff) | |
| download | perlweeklychallenge-club-3ee103c948388738696b2ac4efcb038b80d8d2d9.tar.gz perlweeklychallenge-club-3ee103c948388738696b2ac4efcb038b80d8d2d9.tar.bz2 perlweeklychallenge-club-3ee103c948388738696b2ac4efcb038b80d8d2d9.zip | |
Task 2 PostgreSQL done
| -rw-r--r-- | challenge-138/luca-ferrari/postgresql/ch-2.sql | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-138/luca-ferrari/postgresql/ch-2.sql b/challenge-138/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..6b6c49cc89 --- /dev/null +++ b/challenge-138/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1,34 @@ +CREATE OR REPLACE FUNCTION + f_split_numbers( n int default 9801 ) + RETURNS int +AS $CODE$ + DECLARE + sqrt int := sqrt( n ); + digits int[] := regexp_split_to_array( n::text, '' ); + aggregation int := 0; + sum_left int := 0; + sum_right int := 0; +BEGIN + RAISE DEBUG 'Operating for % (sqrt = %)', n, sqrt; + + FOR aggregation IN 1 .. length( n::text ) LOOP + RAISE DEBUG 'Aggregation index %', aggregation; + + SELECT array_to_string( digits[1:aggregation], '' )::int + , sum( r ) + FROM ( SELECT unnest( digits[ aggregation + 1: length( n::text ) ] ) AS r ) rr + INTO sum_left, sum_right; + + RAISE DEBUG '% + %', sum_left, sum_right; + + IF ( sum_left + sum_right ) = sqrt THEN + RETURN 1; + END IF; + END LOOP; + + RETURN 0; +END + $CODE$ + LANGUAGE plpgsql; + + |
