diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-12-28 09:15:57 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-28 09:15:57 +0000 |
| commit | a74c0126fc8ba1530dff44dee4bfe92f8c547ec0 (patch) | |
| tree | 92d3004dbd9f78b72907af4d24da6506ed1316d7 /challenge-197 | |
| parent | 715eeb71f84e0fa8053ef87419efc02858a5462a (diff) | |
| parent | 276cb86b41284bae906032cf0886917ccf467231 (diff) | |
| download | perlweeklychallenge-club-a74c0126fc8ba1530dff44dee4bfe92f8c547ec0.tar.gz perlweeklychallenge-club-a74c0126fc8ba1530dff44dee4bfe92f8c547ec0.tar.bz2 perlweeklychallenge-club-a74c0126fc8ba1530dff44dee4bfe92f8c547ec0.zip | |
Merge pull request #7321 from PerlBoy1967/branch-for-challenge-197
w197 - Task 1 & 2
Diffstat (limited to 'challenge-197')
| -rwxr-xr-x | challenge-197/perlboy1967/perl/ch-1.pl | 42 | ||||
| -rwxr-xr-x | challenge-197/perlboy1967/perl/ch-2.pl | 46 |
2 files changed, 88 insertions, 0 deletions
diff --git a/challenge-197/perlboy1967/perl/ch-1.pl b/challenge-197/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..64cffeb61d --- /dev/null +++ b/challenge-197/perlboy1967/perl/ch-1.pl @@ -0,0 +1,42 @@ +#!/bin/perl + +=pod + +The Weekly Challenge - 197 +- https://theweeklychallenge.org/blog/perl-weekly-challenge-197/#TASK1 + +Author: Niels 'PerlBoy' van Dijke + +Task 1: Move Zero +Submitted by: Mohammad S Anwar +You are given a list of integers, @list. + +Write a script to move all zero, if exists, to the end while maintaining the relative +order of non-zero elements. + +=cut + +use v5.16; +use common::sense; + +use Test::More; +use Test::Deep qw(cmp_deeply); + + +sub zerosLast { + my @r = grep { $_ != 0 } @_; + return @r, (0) x (@_ - @r); +} + + +for ( + [[1,0,3,0,0,5],[1,3,5,0,0,0]], + [[1,6,4],[1,6,4]], + [[0,1,0,2,0],[1,2,0,0,0]], + [[1,0,2,0,3],[1,2,3,0,0]], + [[0,3,0,1,2],[3,1,2,0,0]], +) { + cmp_deeply([zerosLast(@{$$_[0]})],$$_[1]); +} + +done_testing; diff --git a/challenge-197/perlboy1967/perl/ch-2.pl b/challenge-197/perlboy1967/perl/ch-2.pl new file mode 100755 index 0000000000..218e971f92 --- /dev/null +++ b/challenge-197/perlboy1967/perl/ch-2.pl @@ -0,0 +1,46 @@ +#!/bin/perl + +=pod + +The Weekly Challenge - 197 +- https://theweeklychallenge.org/blog/perl-weekly-challenge-197/#TASK2 + +Author: Niels 'PerlBoy' van Dijke + +Task 2: Wiggle Sort +Submitted by: Mohammad S Anwar +You are given a list of integers, @list. + +Write a script to perform Wiggle Sort on the given list. + + +Wiggle sort would be such as list[0] < list[1] > list[2] < list[3]…. + +=cut + +use v5.16; +use common::sense; + +use Test::More; +use Test::Deep qw(cmp_deeply); + +use List::MoreUtils qw(pairwise); + + +sub wiggleSort { + my @lo = reverse sort { $a <=> $b } @_; + my @up = splice(@lo, 0, scalar(@_) >> 1); + return grep { defined } pairwise {$a,$b} @lo, @up; +} + + +for ( + [[1,5,1,1,6,4],[1,6,1,5,1,4]], + [[1,3,2,2,3,1],[2,3,1,3,1,2]], + [[1,2,3,4,5,6,7,8,9],[5,9,4,8,3,7,2,6,1]], + [[8,12,10,11,9],[10,12,9,11,8]], +) { + cmp_deeply([wiggleSort(@{$$_[0]})],$$_[1]); +} + +done_testing; |
