diff options
| -rw-r--r-- | challenge-111/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-111/jaldhar-h-vyas/perl/ch-1.pl | 73 | ||||
| -rwxr-xr-x | challenge-111/jaldhar-h-vyas/perl/ch-2.pl | 23 | ||||
| -rwxr-xr-x | challenge-111/jaldhar-h-vyas/raku/ch-1.raku | 26 | ||||
| -rwxr-xr-x | challenge-111/jaldhar-h-vyas/raku/ch-2.raku | 16 |
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 |
