From 52d9067c7f372189ea797846146b99ea4644943a Mon Sep 17 00:00:00 2001 From: "Jaldhar H. Vyas" Date: Sun, 28 May 2023 18:07:43 -0400 Subject: Challenge 218 by Jaldhar H. Vyas. --- challenge-218/jaldhar-h-vyas/blog.txt | 1 + challenge-218/jaldhar-h-vyas/perl/ch-1.pl | 37 +++++++++++++++++++++++ challenge-218/jaldhar-h-vyas/perl/ch-2.pl | 47 +++++++++++++++++++++++++++++ challenge-218/jaldhar-h-vyas/raku/ch-1.sh | 3 ++ challenge-218/jaldhar-h-vyas/raku/ch-2.raku | 31 +++++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 challenge-218/jaldhar-h-vyas/blog.txt create mode 100755 challenge-218/jaldhar-h-vyas/perl/ch-1.pl create mode 100755 challenge-218/jaldhar-h-vyas/perl/ch-2.pl create mode 100755 challenge-218/jaldhar-h-vyas/raku/ch-1.sh create mode 100755 challenge-218/jaldhar-h-vyas/raku/ch-2.raku 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 -- cgit