aboutsummaryrefslogtreecommitdiff
path: root/challenge-211
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-04-10 00:39:24 +0100
committerGitHub <noreply@github.com>2023-04-10 00:39:24 +0100
commitebd37a8e5e914a4ea05411487425f6e73209b46b (patch)
treec798c04e1c4ba952c5615021781386ee98febc1a /challenge-211
parentd4e2114f462f14a3757b807a0b0b6a086136b27e (diff)
parent04a3fd897deede571b788bb6323ddb23838e6800 (diff)
downloadperlweeklychallenge-club-ebd37a8e5e914a4ea05411487425f6e73209b46b.tar.gz
perlweeklychallenge-club-ebd37a8e5e914a4ea05411487425f6e73209b46b.tar.bz2
perlweeklychallenge-club-ebd37a8e5e914a4ea05411487425f6e73209b46b.zip
Merge pull request #7878 from oldtechaa/211-avery-adams
211 solutions for Avery Adams
Diffstat (limited to 'challenge-211')
-rw-r--r--challenge-211/avery-adams/perl/ch-1.pl29
-rw-r--r--challenge-211/avery-adams/perl/ch-2.pl50
2 files changed, 79 insertions, 0 deletions
diff --git a/challenge-211/avery-adams/perl/ch-1.pl b/challenge-211/avery-adams/perl/ch-1.pl
new file mode 100644
index 0000000000..c937936243
--- /dev/null
+++ b/challenge-211/avery-adams/perl/ch-1.pl
@@ -0,0 +1,29 @@
+#!/bin/perl
+
+use strict;
+use v5.28;
+
+my @matrix1 = (
+ [4, 3, 2, 1],
+ [5, 4, 3, 2],
+ [6, 5, 4, 3],
+);
+
+my @matrix2 = ([1, 2, 3], [3, 2, 1]);
+
+say 'Is Matrix1 a Toeplitz matrix? : ' . (is_toeplitz(@matrix1) ? 'TRUE' : 'FALSE');
+say 'Is Matrix2 a Toeplitz matrix? : ' . (is_toeplitz(@matrix2) ? 'TRUE' : 'FALSE');
+
+sub is_toeplitz {
+ my @matrix = @_;
+
+ my $rows = scalar @matrix;
+ my $cols = scalar @{$matrix[0]};
+
+ for (my $r = 1; $r < $rows; $r++) {
+ for (my $c = 1; $c < $cols; $c++) {
+ if ($matrix[$r][$c] != $matrix[$r - 1][$c - 1]) {return 0;}
+ }
+ }
+ return 1;
+}
diff --git a/challenge-211/avery-adams/perl/ch-2.pl b/challenge-211/avery-adams/perl/ch-2.pl
new file mode 100644
index 0000000000..bd2dfb85a9
--- /dev/null
+++ b/challenge-211/avery-adams/perl/ch-2.pl
@@ -0,0 +1,50 @@
+#!/bin/perl
+
+use strict;
+use v5.28;
+
+use List::Util 'sum';
+
+if ($#ARGV > 0) {can_split(@ARGV) ? say 'true' : say 'false'};
+
+sub can_split {
+ my @nums = sort {$b <=> $a} (@_);
+ my $maxindex = scalar @nums;
+ my $avg = sum(@nums) / scalar(@nums);
+ my (@list1, @list2, $sum1, $sum2);
+
+ for (my $i = 0; $i < $maxindex; $i++) {
+ if (scalar @list1 == 0) {
+ push @list1, @nums[0];
+ $sum1 += @nums[0];
+ splice @nums, 0, 1;
+ } elsif (scalar @list2 == 0) {
+ push @list2, @nums[0];
+ $sum2 += @nums[0];
+ splice @nums, 0, 1;
+ } else {
+ if (abs(($sum1 / @list1) - $avg) >= abs(($sum2 / @list2) - $avg)) {
+ if ($sum1 / @list1 <= $avg) {
+ push @list1, @nums[0];
+ $sum1 += @nums[0];
+ splice @nums, 0, 1;
+ } else {
+ push @list1, @nums[$#nums];
+ $sum1 += @nums[$#nums];
+ splice @nums, $#nums, 1;
+ }
+ } else {
+ if ($sum2 / @list2 <= $avg) {
+ push @list2, @nums[0];
+ $sum2 += @nums[0];
+ splice @nums, 0, 1;
+ } else {
+ push @list2, @nums[$#nums];
+ $sum2 += @nums[$#nums];
+ splice @nums, $#nums, 1;
+ }
+ }
+ }
+ }
+ $sum1 / scalar @list1 == $sum2 / scalar @list2 ? return 1 : return 0;
+}