aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-04-07 01:25:56 +0100
committerGitHub <noreply@github.com>2023-04-07 01:25:56 +0100
commit2633751d9f5af13b28f073e1f2b8681f925f5bd8 (patch)
tree1b1f105b2241e160f6845b497292b0216e555c44
parentb2e65f315c9226ab6603ade45d6e41fc53e7e431 (diff)
parentae5883dd2325dc38e265798748779fdd19fe1195 (diff)
downloadperlweeklychallenge-club-2633751d9f5af13b28f073e1f2b8681f925f5bd8.tar.gz
perlweeklychallenge-club-2633751d9f5af13b28f073e1f2b8681f925f5bd8.tar.bz2
perlweeklychallenge-club-2633751d9f5af13b28f073e1f2b8681f925f5bd8.zip
Merge pull request #7847 from zapwai/branch-for-challenge-211
Week 211
-rw-r--r--challenge-211/zapwai/perl/ch-1.pl43
-rw-r--r--challenge-211/zapwai/perl/ch-2.pl41
2 files changed, 84 insertions, 0 deletions
diff --git a/challenge-211/zapwai/perl/ch-1.pl b/challenge-211/zapwai/perl/ch-1.pl
new file mode 100644
index 0000000000..13352b3e29
--- /dev/null
+++ b/challenge-211/zapwai/perl/ch-1.pl
@@ -0,0 +1,43 @@
+use v5.30.0;
+my @matrix = ( [4, 3, 2, 1],
+ [5, 4, 3, 2],
+ [6, 5, 4, 3], );
+# my @matrix = ( [1, 2, 3],
+# [3, 2, 1],
+# );
+my $m = $#matrix + 1;
+my $n = $#{$matrix[0]} + 1;
+say "Input: \@matrix is";
+for my $i (0 .. $m - 1) {
+ print " ";
+ for my $j (0 .. $n - 1) {
+ print $matrix[$i][$j];
+ }
+ print "\n";
+}
+my $flag = 1;
+for my $i (0 .. $m - 2) {
+ if ($i == 0) {
+ for my $j (0 .. $n - 2) {
+ $flag = 0 unless (const_diag($i,$j));
+ }
+ } else {
+ $flag = 0 unless (const_diag($i,0));
+ }
+}
+print "\nOutput: ";
+if ($flag) {
+ say "True, the matrix is Toeplitz.";
+} else {
+ say "False, the matrix is not Toeplitz.";
+}
+sub const_diag {
+ my ($i,$j) = @_;
+ my $val = $matrix[$i][$j];
+ for my $s ($i .. $m - 1) {
+ last if (!defined $matrix[$s][$j]);
+ return 0 unless ($matrix[$s][$j] == $val);
+ $j++;
+ }
+ 1
+}
diff --git a/challenge-211/zapwai/perl/ch-2.pl b/challenge-211/zapwai/perl/ch-2.pl
new file mode 100644
index 0000000000..c08d3f84b0
--- /dev/null
+++ b/challenge-211/zapwai/perl/ch-2.pl
@@ -0,0 +1,41 @@
+use v5.30.0;
+my @nums = (1 .. 8);
+#my @nums = (1, 3);
+say "Input: \@nums = (@nums)";
+my $ans;
+my @subarrays;
+my $exp = $#nums + 1;
+for (1 .. (2**$exp) - 2) {
+ my $binary_number = sprintf '%'.$exp.'b', $_;
+ my @pips = split "", $binary_number;
+ my (@part1, @part2);
+ for my $i (0 .. $#nums) {
+ if ($pips[$i] == 1) {
+ push @part1, $nums[$i];
+ } else {
+ push @part2, $nums[$i];
+ }
+ }
+ my ($avg1, $avg2);
+ for my $elem (@part1) {
+ $avg1 += $elem;
+ }
+ for my $elem (@part2) {
+ $avg2 += $elem;
+ }
+ $avg1 = $avg1 / ($#part1 + 1);
+ $avg2 = $avg2 / ($#part2 + 1);
+ # say "@part1 - @part2 ~ $avg1 - $avg2";
+ if ($avg1 - $avg2 == 0) {
+ $ans = 1;
+ my $str = "(@part1)" . ' & ' . "(@part2) with avg $avg1";
+ push @subarrays, $str;
+ }
+}
+print "Output: ";
+if ($ans) {
+ say "true";
+ say "e.g. $subarrays[0]";
+} else {
+ say "false";
+}