diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2024-02-25 23:30:08 -0500 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2024-02-25 23:30:08 -0500 |
| commit | 4f074db574a1021176746359aef813c7a08523fc (patch) | |
| tree | d63fb6b766c10281d2d0365eb76f1c5f7cd2673d | |
| parent | d56f5846adcf3864f7b9dd2426d85ae68579729e (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-257/jaldhar-h-vyas/perl/ch-1.pl | 9 | ||||
| -rwxr-xr-x | challenge-257/jaldhar-h-vyas/perl/ch-2.pl | 48 | ||||
| -rwxr-xr-x | challenge-257/jaldhar-h-vyas/raku/ch-1.raku | 6 | ||||
| -rwxr-xr-x | challenge-257/jaldhar-h-vyas/raku/ch-2.raku | 49 |
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 |
