From 7163b94303e25b7f0077258dbed1433e634da57a Mon Sep 17 00:00:00 2001 From: "Jaldhar H. Vyas" Date: Sun, 28 Apr 2024 18:08:16 -0400 Subject: Challenge 266 by Jaldhar H. Vyas. --- challenge-266/jaldhar-h-vyas/blog.txt | 1 + challenge-266/jaldhar-h-vyas/perl/ch-1.pl | 21 ++++++++++++++++++++ challenge-266/jaldhar-h-vyas/perl/ch-2.pl | 28 +++++++++++++++++++++++++++ challenge-266/jaldhar-h-vyas/raku/ch-1.raku | 11 +++++++++++ challenge-266/jaldhar-h-vyas/raku/ch-2.raku | 30 +++++++++++++++++++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 challenge-266/jaldhar-h-vyas/blog.txt create mode 100755 challenge-266/jaldhar-h-vyas/perl/ch-1.pl create mode 100755 challenge-266/jaldhar-h-vyas/perl/ch-2.pl create mode 100755 challenge-266/jaldhar-h-vyas/raku/ch-1.raku create mode 100755 challenge-266/jaldhar-h-vyas/raku/ch-2.raku diff --git a/challenge-266/jaldhar-h-vyas/blog.txt b/challenge-266/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..f9b54ddf38 --- /dev/null +++ b/challenge-266/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2024/04/perl_weekly_challenge_week_266.html diff --git a/challenge-266/jaldhar-h-vyas/perl/ch-1.pl b/challenge-266/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..6ec212768e --- /dev/null +++ b/challenge-266/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,21 @@ +#!/usr/bin/perl +use v5.38; + +sub makeUniqueBag(@array) { + my %bag; + for my $c (@array) { + $bag{$c}++; + } + + return grep { $bag{$_} == 1 } keys %bag; +} + +sub symmetricDifference($set1, $set2) { + my @all = (@{$set1}, @{$set2}); + return makeUniqueBag(@all); +} + +my @words1 = makeUniqueBag(split /\s+/, @ARGV[0]); +my @words2 = makeUniqueBag(split /\s+/, @ARGV[1]); + +say q{(}, ((join q{, }, map { "'$_'" } symmetricDifference(\@words1, \@words2)) || "''"), q{)}; diff --git a/challenge-266/jaldhar-h-vyas/perl/ch-2.pl b/challenge-266/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..ef45f0bb42 --- /dev/null +++ b/challenge-266/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,28 @@ +#!/usr/bin/perl +use v5.38; + +sub checkMatrix(@matrix) { + my $left = 0; + my $right = scalar @{$matrix[0]} - 1; + + for my $row (keys @matrix) { + for my $col (keys @{$matrix[$row]}) { + if ($col == $left || $col == $right) { + if ($matrix[$row][$col] == 0) { + return undef; + } + } else { + if ($matrix[$row][$col] != 0) { + return undef; + } + } + } + $left++; + $right--; + } + + return 1; +} + +my @matrix = map { [split /\s+/, $_] } @ARGV; +say checkMatrix(@matrix) ? 'true' : 'false'; diff --git a/challenge-266/jaldhar-h-vyas/raku/ch-1.raku b/challenge-266/jaldhar-h-vyas/raku/ch-1.raku new file mode 100755 index 0000000000..90c854370b --- /dev/null +++ b/challenge-266/jaldhar-h-vyas/raku/ch-1.raku @@ -0,0 +1,11 @@ +#!/usr/bin/raku + +sub MAIN( + Str $line1, + Str $line2 +) { + my @words1 = $line1.words.Bag.grep({ $_.value == 1; }).map({ $_.key }); + my @words2 = $line2.words.Bag.grep({ $_.value == 1; }).map({ $_.key }); + + say q{(}, ((@words1 ⊖ @words2).map({ "'{$_.key}'" }).join(q{, }) || "''"), q{)}; +} \ No newline at end of file diff --git a/challenge-266/jaldhar-h-vyas/raku/ch-2.raku b/challenge-266/jaldhar-h-vyas/raku/ch-2.raku new file mode 100755 index 0000000000..98b1b4a93f --- /dev/null +++ b/challenge-266/jaldhar-h-vyas/raku/ch-2.raku @@ -0,0 +1,30 @@ +#!/usr/bin/raku + +sub checkMatrix(@matrix) { + my $left = 0; + my $right = @matrix[0].end; + + for @matrix.keys -> $row { + for @matrix[$row].keys -> $col { + if $col == $left || $col == $right { + if @matrix[$row;$col] == 0 { + return False; + } + } else { + if @matrix[$row;$col] != 0 { + return False; + } + } + } + $left++; + $right--; + } + + return True; +} + +sub MAIN( + *@args +) { + say checkMatrix(@args.map({ [$_.words] })); +} \ No newline at end of file -- cgit