aboutsummaryrefslogtreecommitdiff
path: root/challenge-197
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-12-28 09:15:57 +0000
committerGitHub <noreply@github.com>2022-12-28 09:15:57 +0000
commita74c0126fc8ba1530dff44dee4bfe92f8c547ec0 (patch)
tree92d3004dbd9f78b72907af4d24da6506ed1316d7 /challenge-197
parent715eeb71f84e0fa8053ef87419efc02858a5462a (diff)
parent276cb86b41284bae906032cf0886917ccf467231 (diff)
downloadperlweeklychallenge-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-xchallenge-197/perlboy1967/perl/ch-1.pl42
-rwxr-xr-xchallenge-197/perlboy1967/perl/ch-2.pl46
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;