diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-04-07 01:25:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-07 01:25:56 +0100 |
| commit | 2633751d9f5af13b28f073e1f2b8681f925f5bd8 (patch) | |
| tree | 1b1f105b2241e160f6845b497292b0216e555c44 /challenge-211 | |
| parent | b2e65f315c9226ab6603ade45d6e41fc53e7e431 (diff) | |
| parent | ae5883dd2325dc38e265798748779fdd19fe1195 (diff) | |
| download | perlweeklychallenge-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
Diffstat (limited to 'challenge-211')
| -rw-r--r-- | challenge-211/zapwai/perl/ch-1.pl | 43 | ||||
| -rw-r--r-- | challenge-211/zapwai/perl/ch-2.pl | 41 |
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"; +} |
