aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2024-02-25 23:30:08 -0500
committerJaldhar H. Vyas <jaldhar@braincells.com>2024-02-25 23:30:08 -0500
commit4f074db574a1021176746359aef813c7a08523fc (patch)
treed63fb6b766c10281d2d0365eb76f1c5f7cd2673d
parentd56f5846adcf3864f7b9dd2426d85ae68579729e (diff)
downloadperlweeklychallenge-club-4f074db574a1021176746359aef813c7a08523fc.tar.gz
perlweeklychallenge-club-4f074db574a1021176746359aef813c7a08523fc.tar.bz2
perlweeklychallenge-club-4f074db574a1021176746359aef813c7a08523fc.zip
Challenge 257 by Jaldhar H. Vyas.
-rw-r--r--challenge-257/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-257/jaldhar-h-vyas/perl/ch-1.pl9
-rwxr-xr-xchallenge-257/jaldhar-h-vyas/perl/ch-2.pl48
-rwxr-xr-xchallenge-257/jaldhar-h-vyas/raku/ch-1.raku6
-rwxr-xr-xchallenge-257/jaldhar-h-vyas/raku/ch-2.raku49
5 files changed, 113 insertions, 0 deletions
diff --git a/challenge-257/jaldhar-h-vyas/blog.txt b/challenge-257/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..5abc282db4
--- /dev/null
+++ b/challenge-257/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2024/02/perl_weekly_challenge_week_257.html
diff --git a/challenge-257/jaldhar-h-vyas/perl/ch-1.pl b/challenge-257/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..aebc73223c
--- /dev/null
+++ b/challenge-257/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,9 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+my @ints = @ARGV;
+my $n = scalar @ints - 1;
+my %sorted = map { $_ => $n-- } reverse sort { $a <=> $b } @ints;
+
+say q{(}, ( join q{, }, map { $sorted{$_} } @ints ), q{)};
diff --git a/challenge-257/jaldhar-h-vyas/perl/ch-2.pl b/challenge-257/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..9b46690783
--- /dev/null
+++ b/challenge-257/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub isRREF {
+ my ($matrix) = @_;
+ my $leading = -1;
+ my $zeroRow = undef;
+
+ for my $row (keys @{$matrix}) {
+ my $currentLeading = -1;
+ for my $col (keys @{$matrix->[$row]}) {
+ if ($matrix->[$row][$col] == 1) {
+ $currentLeading = $col;
+ last;
+ }
+ }
+
+ if ($currentLeading == -1) {
+ if (grep { $_ > 1 } @{$matrix->[$row]}) {
+ return 0;
+ }
+
+ $zeroRow = 1;
+ next;
+ }
+
+ if ($zeroRow) {
+ return 0;
+ }
+
+ if ($currentLeading < $leading) {
+ return 0;
+ }
+
+ $leading = $currentLeading;
+
+ if ((scalar grep { $_ > 0 } map { $matrix->[$_][$leading] } keys @{$matrix}) > 1) {
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+my @matrix = map { [ map { 0 + $_ } split /\s+/ ] } @ARGV;
+
+say isRREF(\@matrix);
diff --git a/challenge-257/jaldhar-h-vyas/raku/ch-1.raku b/challenge-257/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..e6aef0ff52
--- /dev/null
+++ b/challenge-257/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,6 @@
+#!/usr/bin/raku
+
+sub MAIN(*@ints) {
+ my %sorted = @ints.sort.kv.Hash.antipairs;
+ say q{(}, @ints.map({ %sorted{$_} }).join(q{, }), q{)};
+}
diff --git a/challenge-257/jaldhar-h-vyas/raku/ch-2.raku b/challenge-257/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..8cd7ee1be6
--- /dev/null
+++ b/challenge-257/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,49 @@
+#!/usr/bin/raku
+
+sub isRREF(@matrix) {
+ my $leading = -1;
+ my $zeroCol = False;
+
+ for @matrix.keys -> $row {
+ my $currentLeading = -1;
+ for @matrix[$row].keys -> $col {
+ if @matrix[$row;$col] == 1 {
+ $currentLeading = $col;
+ last;
+ }
+ }
+
+ if $currentLeading == -1 {
+ if @matrix[$row].any > 0 {
+ return False;
+ }
+
+ $zeroCol = True;
+ next;
+ }
+
+ if $zeroCol {
+ return False;
+ }
+
+ if $currentLeading < $leading {
+ return False;
+ }
+
+ $leading = $currentLeading;
+
+ if @matrix[*;$leading].grep({ $_ > 0 }) > 1 {
+ return False;
+ }
+ }
+
+ return True;
+}
+
+sub MAIN(
+ *@args
+) {
+ my @matrix = @args.map({ [ $_.words.map({ .Int }) ] });
+
+ say isRREF(@matrix) ?? 1 !! 0;
+} \ No newline at end of file