diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2025-10-07 18:39:18 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2025-10-07 23:51:26 -0400 |
| commit | 7d50d5bfc29183579944c4832c7aae93abe661d1 (patch) | |
| tree | b14d0260125cae28b25b12104d5f6c412c082d11 | |
| parent | 19079cd8a18e2ddf3696b1fcb9eb14f27d785e15 (diff) | |
| download | perlweeklychallenge-club-7d50d5bfc29183579944c4832c7aae93abe661d1.tar.gz perlweeklychallenge-club-7d50d5bfc29183579944c4832c7aae93abe661d1.tar.bz2 perlweeklychallenge-club-7d50d5bfc29183579944c4832c7aae93abe661d1.zip | |
Challenge 342 by Jaldhar H. Vyas.
| -rw-r--r-- | challenge-342/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-342/jaldhar-h-vyas/perl/ch-1.pl | 38 | ||||
| -rwxr-xr-x | challenge-342/jaldhar-h-vyas/perl/ch-2.pl | 16 | ||||
| -rwxr-xr-x | challenge-342/jaldhar-h-vyas/raku/ch-1.raku | 38 | ||||
| -rwxr-xr-x | challenge-342/jaldhar-h-vyas/raku/ch-2.raku | 18 |
5 files changed, 111 insertions, 0 deletions
diff --git a/challenge-342/jaldhar-h-vyas/blog.txt b/challenge-342/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..2a7aedaa97 --- /dev/null +++ b/challenge-342/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2025/10/perl_weekly_challenge_week_342.html diff --git a/challenge-342/jaldhar-h-vyas/perl/ch-1.pl b/challenge-342/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..a86c807a6c --- /dev/null +++ b/challenge-342/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,38 @@ +#!/usr/bin/perl +use 5.038; +use warnings; + +my $str = shift; + +my @letters = sort grep { /[[:lower:]]/ } split //, $str; +my @digits = sort grep { /[[:digit:]]/ } split //, $str; +my $digitFirst = scalar @digits >= scalar @letters; + +if (abs(scalar @letters - scalar @digits) > 1) { + say ""; + exit; +} + +my $result = ""; +my $lindex = 0; +my $dindex = 0; + +while ($lindex < scalar @letters || $dindex < scalar @digits) { + if ($digitFirst) { + if ($dindex < scalar @digits) { + $result .= $digits[$dindex++]; + } + if ($lindex < scalar @letters) { + $result .= $letters[$lindex++]; + } + } else { + if ($lindex < scalar @letters) { + $result .= $letters[$lindex++]; + } + if ($dindex < scalar @digits) { + $result .= $digits[$dindex++]; + } + } +} + +say $result;
\ No newline at end of file diff --git a/challenge-342/jaldhar-h-vyas/perl/ch-2.pl b/challenge-342/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..24e60a49f8 --- /dev/null +++ b/challenge-342/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,16 @@ +#!/usr/bin/perl +use 5.038; +use warnings; + +my $str = shift; +my $max = -"Inf"; + +for my $i (1 .. (length $str) - 1) { + my $score = substr($str, 0, $i) =~ tr/0/0/ + substr($str, $i) =~ tr/1/1/; + + if ($score > $max) { + $max = $score; + } +} + +say $max; diff --git a/challenge-342/jaldhar-h-vyas/raku/ch-1.raku b/challenge-342/jaldhar-h-vyas/raku/ch-1.raku new file mode 100755 index 0000000000..041c4c6ff0 --- /dev/null +++ b/challenge-342/jaldhar-h-vyas/raku/ch-1.raku @@ -0,0 +1,38 @@ +#!/usr/bin/env raku + +sub MAIN( + Str $str +) { + my @letters = $str.comb.grep({ /<lower>/ }).sort; + my @digits = $str.comb.grep({ /<digit>/ }).sort; + my $digitFirst = @digits.elems >= @letters.elems; + + if (@letters.elems - @digits.elems).abs > 1 { + say ""; + exit; + } + + my $result = ""; + my $lindex = 0; + my $dindex = 0; + + while $lindex < @letters.elems || $dindex < @digits.elems { + if $digitFirst { + if $dindex < @digits.elems { + $result ~= @digits[$dindex++]; + } + if $lindex < @letters.elems { + $result ~= @letters[$lindex++]; + } + } else { + if $lindex < @letters.elems { + $result ~= @letters[$lindex++]; + } + if $dindex < @digits.elems { + $result ~= @digits[$dindex++]; + } + } + } + + say $result; +}
\ No newline at end of file diff --git a/challenge-342/jaldhar-h-vyas/raku/ch-2.raku b/challenge-342/jaldhar-h-vyas/raku/ch-2.raku new file mode 100755 index 0000000000..426ce43972 --- /dev/null +++ b/challenge-342/jaldhar-h-vyas/raku/ch-2.raku @@ -0,0 +1,18 @@ +#!/usr/bin/raku + +sub MAIN( + $str, +) { + my $max = -∞; + + for (1 ..^ $str.chars) -> $i { + my $score = $str.substr(0, $i).match(/(0)/, :g).elems + + $str.substr($i).match(/(1)/, :g).elems; + + if ($score > $max) { + $max = $score; + } + } + + say $max; +}
\ No newline at end of file |
