diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2021-11-01 11:38:21 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2021-11-01 11:38:21 +0100 |
| commit | 9033acb1a25d205c9fe4b3c0b0efede574a86416 (patch) | |
| tree | ad91501a8f1bb18fbc195cdf9a29e881c5b7bf14 /challenge-137/luca-ferrari/postgresql/ch-2.sql | |
| parent | c22ce4b14b260b7acd1f536c6bfdb4ebf3e42dbb (diff) | |
| download | perlweeklychallenge-club-9033acb1a25d205c9fe4b3c0b0efede574a86416.tar.gz perlweeklychallenge-club-9033acb1a25d205c9fe4b3c0b0efede574a86416.tar.bz2 perlweeklychallenge-club-9033acb1a25d205c9fe4b3c0b0efede574a86416.zip | |
Solutions in PostgreSQL
Diffstat (limited to 'challenge-137/luca-ferrari/postgresql/ch-2.sql')
| -rw-r--r-- | challenge-137/luca-ferrari/postgresql/ch-2.sql | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/challenge-137/luca-ferrari/postgresql/ch-2.sql b/challenge-137/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..ed96d27b8f --- /dev/null +++ b/challenge-137/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1,36 @@ +/* +testdb=> select * from f_lychrel( 59, true ); +INFO: Found 1111 after 3 iterations +f_lychrel +----------- +0 +*/ +CREATE OR REPLACE FUNCTION +f_lychrel( n int, verb boolean default false ) +RETURNS smallint +AS $CODE$ +DECLARE + result bigint := n; + iteration int := 0; +BEGIN + IF n < 10 OR n > 10000 THEN + RAISE 'n is out of bounds!'; + END IF; + + WHILE result < 10000000 AND iteration < 500 LOOP + iteration = iteration + 1; + result = result + reverse( result::text )::int; + IF result = reverse( result::text )::int THEN + IF verb THEN + RAISE INFO 'Found % after % iterations', result, iteration; + END IF; + + RETURN 0; + END IF; + + END LOOP; + + RETURN 1; +END +$CODE$ +LANGUAGE plpgsql; |
