aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-111/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-111/jaldhar-h-vyas/perl/ch-1.pl73
-rwxr-xr-xchallenge-111/jaldhar-h-vyas/perl/ch-2.pl23
-rwxr-xr-xchallenge-111/jaldhar-h-vyas/raku/ch-1.raku26
-rwxr-xr-xchallenge-111/jaldhar-h-vyas/raku/ch-2.raku16
5 files changed, 139 insertions, 0 deletions
diff --git a/challenge-111/jaldhar-h-vyas/blog.txt b/challenge-111/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..4247e65d25
--- /dev/null
+++ b/challenge-111/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2021/05/perl_weekly_challenge_week_111.html
diff --git a/challenge-111/jaldhar-h-vyas/perl/ch-1.pl b/challenge-111/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..48729fc861
--- /dev/null
+++ b/challenge-111/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,73 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+sub pick {
+ my @range = @{$_[0]};
+ my $quantity = $_[1] // 1;
+
+ if ($quantity < 1 || $quantity > scalar @range) {
+ die "out of range\n";
+ }
+
+ my @picked;
+
+ for my $i (1 .. $quantity) {
+ my $try = q{ };
+ while ($try eq q{ }) {
+ $try = $range[int(rand(scalar @range))];
+ }
+ @range = map { $_ eq $try ? q{ } : $_; } @range;
+ push @picked, $try;
+ }
+
+ return wantarray ? @picked : $picked[0];
+}
+
+sub batch {
+ my @range = @{$_[0]};
+ my $quantity = $_[1];
+
+ if ($quantity < 1 || $quantity > scalar @range) {
+ die "out of range\n";
+ }
+
+ my $length = scalar @range;
+ my $i = 0;
+ while ($i < $length) {
+ my @row;
+ for (1 .. $quantity) {
+ push @row, shift @range;
+ $i++;
+ if ($i == $length) {
+ last;
+ }
+ }
+ push @range, [@row];
+ }
+
+ return wantarray ? @range : $range[0];
+}
+
+my @matrix = batch([sort { $a <=> $b } pick([1 .. 50], 25)], 5);
+my $input = pick([1 .. 50]);
+my $output = 0;
+
+for my $i (0 .. scalar @matrix - 1) {
+ if ($input <= $matrix[$i][-1]) {
+ for my $j (0 .. scalar @{$matrix[$i]} - 1) {
+ if ($matrix[$i][$j] == $input) {
+ $output = 1;
+ last;
+ }
+ }
+ last;
+ }
+}
+
+for my $i (0 .. scalar @matrix - 1) {
+ print $i ? q{ } : 'matrix: ';
+ say q{[ }, (join q{, }, map { sprintf("%2d", $_); } @{$matrix[$i]}), q{ ]};
+}
+say "\nInput: ", $input;
+say $output;
diff --git a/challenge-111/jaldhar-h-vyas/perl/ch-2.pl b/challenge-111/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..965e9fe942
--- /dev/null
+++ b/challenge-111/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+use English qw/ -no_match_vars /;
+
+my $filename = shift // die "Need a filename\n";
+
+open my $file, '<' , $filename or die "$OS_ERROR\n";
+local $RS = undef;
+my @lines = split "\n", <$file>;
+close $file;
+
+my $longest = q{};
+
+for my $line (@lines) {
+ chomp $line;
+ if (lc $line eq (join q{}, sort split //, lc $line) &&
+ length $line > length $longest) {
+ $longest = $line;
+ }
+}
+
+say $longest;
diff --git a/challenge-111/jaldhar-h-vyas/raku/ch-1.raku b/challenge-111/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..0098aaaab4
--- /dev/null
+++ b/challenge-111/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,26 @@
+#!/usr/bin/raku
+
+sub MAIN() {
+ my @matrix = (1 .. 50).pick(25).sort.batch(5);
+ my $input = (1 .. 50).pick;
+ my $output = 0;
+
+ for 0 ..^ @matrix.elems -> $i {
+ if $input <= @matrix[$i][*-1] {
+ for 0 ..^ @matrix[$i].elems -> $j {
+ if @matrix[$i][$j] == $input {
+ $output = 1;
+ last;
+ }
+ }
+ last;
+ }
+ }
+
+ for 0 .. 4 -> $i {
+ print $i ?? q{ } !! 'matrix: ';
+ say q{[ }, @matrix[$i].map({ sprintf("%2d", $_)}).join(q{, }), q{ ]};
+ }
+ say "\nInput: ", $input;
+ say $output;
+} \ No newline at end of file
diff --git a/challenge-111/jaldhar-h-vyas/raku/ch-2.raku b/challenge-111/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..7a0b17f18a
--- /dev/null
+++ b/challenge-111/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,16 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ Str $filename
+) {
+ my $longest = q{};
+
+ for $filename.IO.lines -> $line {
+ chomp $line;
+ if $line.lc ~~ $line.lc.comb.sort.join && $line.chars > $longest.chars {
+ $longest = $line;
+ }
+ }
+
+ say $longest;
+} \ No newline at end of file