aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-218/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-218/jaldhar-h-vyas/perl/ch-1.pl37
-rwxr-xr-xchallenge-218/jaldhar-h-vyas/perl/ch-2.pl47
-rwxr-xr-xchallenge-218/jaldhar-h-vyas/raku/ch-1.sh3
-rwxr-xr-xchallenge-218/jaldhar-h-vyas/raku/ch-2.raku31
5 files changed, 119 insertions, 0 deletions
diff --git a/challenge-218/jaldhar-h-vyas/blog.txt b/challenge-218/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..8b0d57c6de
--- /dev/null
+++ b/challenge-218/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2023/05/perl_weekly_challenge_week_218.html
diff --git a/challenge-218/jaldhar-h-vyas/perl/ch-1.pl b/challenge-218/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..9a72f9fcb6
--- /dev/null
+++ b/challenge-218/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub combinations {
+ my @list = @{$_[0]};
+ my $length = $_[1];
+
+ if ($length <= 1) {
+ return map [$_], @list;
+ }
+
+ my @combos;
+
+ for (my $i = 0; $i + $length <= scalar @list; $i++) {
+ my $val = $list[$i];
+ my @rest = @list[$i + 1 .. $#list];
+ for my $c (combinations(\@rest, $length - 1)) {
+ push @combos, [$val, @{$c}] ;
+ }
+ }
+
+ return @combos;
+}
+
+sub product {
+ my ($arr) = @_;
+ my $total = 1;
+
+ for my $elem (@{$arr}) {
+ $total *= $elem;
+ }
+
+ return $total;
+}
+
+say 0+(sort { $b <=> $a } map { product($_) } combinations(\@ARGV, 3))[0]; \ No newline at end of file
diff --git a/challenge-218/jaldhar-h-vyas/perl/ch-2.pl b/challenge-218/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..9e33915e24
--- /dev/null
+++ b/challenge-218/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub sum {
+ my ($arr) = @_;
+
+ my $total = 0;
+
+ for my $elem (@{$arr}) {
+ $total += $elem;
+ }
+
+ return $total;
+}
+
+my @matrix;
+for my $i (0 .. scalar @ARGV - 1) {
+ my @row = split /,/, $ARGV[$i];
+ push @matrix, \@row;
+}
+my $m = scalar @matrix;
+my $n = scalar @{$matrix[0]};
+
+for my $i (0 .. $m - 1) {
+ if ($matrix[$i]->[0] eq '0') {
+ for my $j (0 .. $n - 1) {
+ $matrix[$i]->[$j] = ($matrix[$i]->[$j] eq '1' ? '0' : '1');
+ }
+ }
+}
+
+for my $i (0 .. $n - 1) {
+ my $zeros = 0;
+ my $ones = 0;
+ for my $j (0 .. $m - 1) {
+ $matrix[$j]->[$i] eq '0' ? $zeros++ : $ones++;
+ }
+
+ if ($zeros > $ones) {
+ for my $j (0 .. $m - 1) {
+ $matrix[$j]->[$i] = ($matrix[$j]->[$i] eq '1' ? '0' : '1');
+ }
+ }
+}
+
+say sum [ map { oct( '0b' . join q{}, @{$_} ) } @matrix ];
diff --git a/challenge-218/jaldhar-h-vyas/raku/ch-1.sh b/challenge-218/jaldhar-h-vyas/raku/ch-1.sh
new file mode 100755
index 0000000000..c8b2d20f38
--- /dev/null
+++ b/challenge-218/jaldhar-h-vyas/raku/ch-1.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+raku -e '@*ARGS.combinations(3).map({ [*] $_ }).max.say;' $@ \ No newline at end of file
diff --git a/challenge-218/jaldhar-h-vyas/raku/ch-2.raku b/challenge-218/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..0861eb0680
--- /dev/null
+++ b/challenge-218/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,31 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@args
+) {
+ my @matrix;
+ for 0 .. @args.end -> $i {
+ @matrix[$i].push(| @args[$i].split(/','/));
+ }
+ my $m = @matrix.elems;
+ my $n = @matrix[0].elems;
+
+ for (0 ..^ $m) -> $i {
+ if @matrix[$i;0] eq '0' {
+ for (0 ..^ $n) -> $j {
+ @matrix[$i;$j] = (@matrix[$i;$j] eq '1' ?? '0' !! '1');
+ }
+ }
+ }
+
+ for (0 ..^ $n) -> $i {
+ my %count = @matrix[0 ..^ $m;$i].classify({ $_; });
+ if %count{0}.elems > %count{1}.elems {
+ for (0 ..^ $m) -> $j {
+ @matrix[$j;$i] = (@matrix[$j;$i] eq '1' ?? '0' !! '1');
+ }
+ }
+ }
+
+ @matrix.map({ '0b' ~ @$_.join(q{}) }).sum.say;
+} \ No newline at end of file