diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2022-12-27 10:11:10 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2022-12-27 10:11:10 +0100 |
| commit | a3330f36884d9948dfa587adceda9aa9b2d0e9a9 (patch) | |
| tree | 5af3ad6aa9c968b6c21760a8d2d82863ce916623 | |
| parent | 1ed55b1aa7084fca33cda1b3c3ce683a16a65ac5 (diff) | |
| download | perlweeklychallenge-club-a3330f36884d9948dfa587adceda9aa9b2d0e9a9.tar.gz perlweeklychallenge-club-a3330f36884d9948dfa587adceda9aa9b2d0e9a9.tar.bz2 perlweeklychallenge-club-a3330f36884d9948dfa587adceda9aa9b2d0e9a9.zip | |
Task 2 plperl
| -rw-r--r-- | challenge-197/luca-ferrari/postgresql/ch-2.plperl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/challenge-197/luca-ferrari/postgresql/ch-2.plperl b/challenge-197/luca-ferrari/postgresql/ch-2.plperl new file mode 100644 index 0000000000..6da49c355b --- /dev/null +++ b/challenge-197/luca-ferrari/postgresql/ch-2.plperl @@ -0,0 +1,33 @@ +-- Perl Weekly Challenge 197 +-- Task 2 + +CREATE SCHEMA IF NOT EXISTS pwc197; + +CREATE OR REPLACE FUNCTION +pwc197.task2_plperl( int[] ) +RETURNS int[] +AS $CODE$ +my ( $array ) = @_; +my $sorted = [ $array->@* ]; +my $need_swap = 1; + +while ( $need_swap ) { + $need_swap = 0; + for my $i ( 0 .. $sorted->@* - 1 ) { + my $need_swap = ( ( $i % 2 == 0 ) && ( $sorted->[ $i ] >= $sorted->[ $i + 1 ] ) ) + || ( ( $i % 2 != 0 ) && ( $sorted->[ $i ] <= $sorted->[ $i + 1 ] ) ); + + if ( $need_swap ) { + my $temp = $sorted->[ $i ]; + $sorted->[ $i ] = $sorted->[ $i + 1 ]; + $sorted->[ $i + 1 ] = $temp; + } + + + } +} + +return $sorted; + +$CODE$ +LANGUAGE plperl; |
