diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2022-04-04 10:21:30 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2022-04-04 10:21:30 +0200 |
| commit | b91c8355370302f29a2380e43685737ff644b9f2 (patch) | |
| tree | 0036365722eeeee59df118b23fc4332c12592e5d | |
| parent | b736fb2f6a230c678badabac696aa77ac0d6c3e1 (diff) | |
| download | perlweeklychallenge-club-b91c8355370302f29a2380e43685737ff644b9f2.tar.gz perlweeklychallenge-club-b91c8355370302f29a2380e43685737ff644b9f2.tar.bz2 perlweeklychallenge-club-b91c8355370302f29a2380e43685737ff644b9f2.zip | |
Task 1 done in Pl/Perl
| -rw-r--r-- | challenge-159/luca-ferrari/postgresql/ch-1.plperl | 39 | ||||
| -rw-r--r-- | challenge-159/luca-ferrari/postgresql/ch-1.sql | 1 | ||||
| -rw-r--r-- | challenge-159/luca-ferrari/postgresql/ch-2.sql | 1 |
3 files changed, 41 insertions, 0 deletions
diff --git a/challenge-159/luca-ferrari/postgresql/ch-1.plperl b/challenge-159/luca-ferrari/postgresql/ch-1.plperl new file mode 100644 index 0000000000..f14fe72613 --- /dev/null +++ b/challenge-159/luca-ferrari/postgresql/ch-1.plperl @@ -0,0 +1,39 @@ +CREATE SCHEMA IF NOT EXISTS pwc159; + +CREATE OR REPLACE FUNCTION +pwc159.farey( int ) +RETURNS SETOF text +AS $CODE$ + my ($n) = @_; + + my %farey; + + for my $denominator ( 2 .. $n ) { + for my $number ( 1 .. $denominator ) { + + # reduce things like 2/4 to 1/2 + ( $denominator, $number ) /= $number if ( $denominator % $number == 0 ); + ( $denominator, $number ) /= $denominator if ( $number % $denominator == 0 ); + + $farey{ $number/$denominator } = "$number/$denominator"; + } + } + + # bootstrap + return_next( '0/1' ); + + my %unique_counter; + for my $key ( sort keys( %farey ) ) { + # ensure only one item is printed out + $unique_counter{ $key }++; + next if $unique_counter{ $key } > 1; + next if $key == 1; # last term in the sequence + + return_next( $farey{ $key } ); + } + + # end term + return_next( '1/1' ); + return undef; +$CODE$ +LANGUAGE plperl; diff --git a/challenge-159/luca-ferrari/postgresql/ch-1.sql b/challenge-159/luca-ferrari/postgresql/ch-1.sql new file mode 100644 index 0000000000..da8824c0c2 --- /dev/null +++ b/challenge-159/luca-ferrari/postgresql/ch-1.sql @@ -0,0 +1 @@ +-- Perl Weekly Challenge 159 diff --git a/challenge-159/luca-ferrari/postgresql/ch-2.sql b/challenge-159/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..da8824c0c2 --- /dev/null +++ b/challenge-159/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1 @@ +-- Perl Weekly Challenge 159 |
