From 58d2e54e0381157072a8b30d60a6ea06e4f900ae Mon Sep 17 00:00:00 2001 From: David Ferrone Date: Mon, 26 Dec 2022 11:46:58 -0500 Subject: Week 197 --- challenge-197/zapwai/perl/ch-1.pl | 28 ++++++++++++++++++++++++++++ challenge-197/zapwai/perl/ch-2.pl | 25 +++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100755 challenge-197/zapwai/perl/ch-1.pl create mode 100755 challenge-197/zapwai/perl/ch-2.pl diff --git a/challenge-197/zapwai/perl/ch-1.pl b/challenge-197/zapwai/perl/ch-1.pl new file mode 100755 index 0000000000..fae666d7d0 --- /dev/null +++ b/challenge-197/zapwai/perl/ch-1.pl @@ -0,0 +1,28 @@ +#!/usr/bin/env perl +use v5.30.0; +my @list = (1, 0, 3, 0, 0, 5); +# my @list = (0, 1, 0, 2, 0); + +say "Input: (".join(",", @list).")"; +my $numzeros = 0; +foreach (@list) { + $numzeros++ if $_ == 0; +} +my $nonzero = @list - $numzeros - 1; # index of last nonzero entry +sub swap { + for (0 .. $#list - 1) { + if ($list[$_] == 0) { + $list[$_] = $list[$_ + 1]; + $list[$_ + 1] = 0; + } + } +} +my $flag; +do { + $flag=0; + swap(); + foreach (0 .. $#list) { + $flag++ if (($_ <= $nonzero) && ($list[$_] == 0)); + } +} while ($flag); +say "Output: (".join(",", @list).")"; diff --git a/challenge-197/zapwai/perl/ch-2.pl b/challenge-197/zapwai/perl/ch-2.pl new file mode 100755 index 0000000000..0b1dfb4313 --- /dev/null +++ b/challenge-197/zapwai/perl/ch-2.pl @@ -0,0 +1,25 @@ +#!/usr/bin/env perl +use v5.30.0; +my $list1 = [1,5,1,1,6,4]; +my $list2 = [1,3,2,2,3,1]; +for my $ref ($list1, $list2) { + my @list = @$ref; + say "Input: \@list: (".join(",", @list).")"; + my $cnt; + do { + $cnt=0; + for (0 .. $#list) { + if ($_ % 2 == 0) { + wiggle(\$cnt, \@list) if ($list[$_ + 1] < $list[$_]); + } else { + wiggle(\$cnt, \@list) if ($list[$_ + 1] > $list[$_]); + } + } + } while ($cnt > 0); + say "Output: (".join(",", @list).")"; +} +sub wiggle { + my ($cnt, $list) = @_; + $$cnt++; + ($$list[$_],$$list[$_ + 1]) = ($$list[$_+1], $$list[$_]); +} -- cgit