aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-04-10 01:00:43 +0100
committerGitHub <noreply@github.com>2023-04-10 01:00:43 +0100
commit6f72b6a74cff52c8cca4543e76c3fb3b34d25cd2 (patch)
tree910952dfc2a4f308f6c4c83b4ac173807ba13b27
parent5100bdd8254a088ee3e28ced4bbe388be4abea2a (diff)
parent9f0321dab2d822022fd65a8e71c186ff3c00eefc (diff)
downloadperlweeklychallenge-club-6f72b6a74cff52c8cca4543e76c3fb3b34d25cd2.tar.gz
perlweeklychallenge-club-6f72b6a74cff52c8cca4543e76c3fb3b34d25cd2.tar.bz2
perlweeklychallenge-club-6f72b6a74cff52c8cca4543e76c3fb3b34d25cd2.zip
Merge pull request #7880 from jaldhar/challenge-211
Challenge 211 by Jaldhar H. Vyas.
-rw-r--r--challenge-211/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-211/jaldhar-h-vyas/perl/ch-1.pl64
-rwxr-xr-xchallenge-211/jaldhar-h-vyas/perl/ch-2.pl52
-rwxr-xr-xchallenge-211/jaldhar-h-vyas/raku/ch-1.raku42
-rwxr-xr-xchallenge-211/jaldhar-h-vyas/raku/ch-2.raku23
5 files changed, 182 insertions, 0 deletions
diff --git a/challenge-211/jaldhar-h-vyas/blog.txt b/challenge-211/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..34b7a6cc0a
--- /dev/null
+++ b/challenge-211/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2023/04/perl_weekly_challenge_week_211.html \ No newline at end of file
diff --git a/challenge-211/jaldhar-h-vyas/perl/ch-1.pl b/challenge-211/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..336bcb5b6c
--- /dev/null
+++ b/challenge-211/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub batch {
+ my @range = @{$_[0]};
+ my $quantity = $_[1];
+
+ if ($quantity < 1 || $quantity > scalar @range) {
+ die "out of range\n";
+ }
+
+ my $length = scalar @range;
+ my $i = 0;
+ while ($i < $length) {
+ my @row;
+ for (1 .. $quantity) {
+ push @row, shift @range;
+ $i++;
+ if ($i == $length) {
+ last;
+ }
+ }
+ push @range, [@row];
+ }
+
+ return wantarray ? @range : $range[0];
+}
+
+sub diagonal {
+ my ($matrix, $r, $c, $row, $col) = @_;
+ my $i = $row;
+ my $j = $col;
+ my $same = $matrix->[$i]->[$j];
+
+ while ($i < $r && $j < $c) {
+ if ($matrix->[$i]->[$j] != $same) {
+ return undef;
+ }
+ $i++;
+ $j++;
+ }
+ return 1;
+}
+
+my $r = shift;
+my $c = shift;
+my @matrix = batch(\@ARGV, $c);
+
+for my $col (0 .. $c - 1) {
+ unless (diagonal(\@matrix, $r, $c, 0, $col)) {
+ say 'false';
+ exit;
+ }
+}
+
+for my $row (1 .. $r - 1) {
+ unless (diagonal(\@matrix, $r, $c, $row, 0)) {
+ say 'false';
+ exit;
+ }
+}
+
+say "true"; \ No newline at end of file
diff --git a/challenge-211/jaldhar-h-vyas/perl/ch-2.pl b/challenge-211/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..d19afcf080
--- /dev/null
+++ b/challenge-211/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub permute (&@) {
+ my $code = shift;
+ my @idx = 0..$#_;
+ while ( $code->(@_[@idx]) ) {
+ my $p = $#idx;
+ --$p while $idx[$p-1] > $idx[$p];
+ my $q = $p or return;
+ push @idx, reverse splice @idx, $p;
+ ++$q while $idx[$p-1] > $idx[$q];
+ @idx[$p-1,$q]=@idx[$q,$p-1];
+ }
+}
+
+sub sum {
+ my ($arr) = @_;
+ my $total = 0;
+
+ for my $elem (@{$arr}) {
+ $total += $elem;
+ }
+
+ return $total;
+}
+
+sub average {
+ my ($nums) = @_;
+
+ return sum($nums) / scalar @{$nums};
+}
+
+my @permutations;
+permute { push @permutations, \@_; } @ARGV;
+
+my @nums;
+for my $i (@permutations) {
+
+ for my $j (1 .. scalar @{$i} - 1) {
+ my @array = @{$i};
+ my @part1 = splice(@array, 0, $j);
+ my @part2 = @array;
+
+ if (average([@part1]) == average([@part2])) {
+ say "true";
+ exit;
+ }
+ }
+}
+say 'false';
diff --git a/challenge-211/jaldhar-h-vyas/raku/ch-1.raku b/challenge-211/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..02e03c3f13
--- /dev/null
+++ b/challenge-211/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,42 @@
+#!/usr/bin/raku
+
+sub diagonal(@matrix, $r, $c, $row, $col) {
+ my $i = $row;
+ my $j = $col;
+ my $same = @matrix[$i;$j];
+
+ while $i < $r && $j < $c {
+ if @matrix[$i;$j] != $same {
+ return False;
+ }
+ $i++;
+ $j++;
+ }
+ return True;
+}
+
+sub MAIN(
+ $r,
+ $c,
+ *@args
+) {
+
+ my @matrix = @args.batch($c);
+
+
+ for 0 ..^ $c -> $col {
+ unless diagonal(@matrix, $r, $c, 0, $col) {
+ say 'false';
+ exit;
+ }
+ }
+
+ for 1 ..^ $r -> $row {
+ unless diagonal(@matrix, $r, $c, $row, 0) {
+ say 'false';
+ exit;
+ }
+ }
+
+ say 'true';
+} \ No newline at end of file
diff --git a/challenge-211/jaldhar-h-vyas/raku/ch-2.raku b/challenge-211/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..948a064315
--- /dev/null
+++ b/challenge-211/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,23 @@
+#!/usr/bin/raku
+
+sub average(@nums) {
+ return @nums.sum / @nums.elems;
+}
+
+sub MAIN(
+ *@nums
+) {
+ for @nums.permutations -> $i {
+ for 1 ..^ @$i.elems -> $j {
+ my @array = $i.Array;
+ my @part1 = @array.splice(0, $j);
+ my @part2 = @array;
+
+ if average(@part1) == average(@part2) {
+ say "true";
+ exit;
+ }
+ }
+ }
+ say 'false';
+} \ No newline at end of file