aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2025-10-07 18:39:18 -0400
committerJaldhar H. Vyas <jaldhar@braincells.com>2025-10-07 23:51:26 -0400
commit7d50d5bfc29183579944c4832c7aae93abe661d1 (patch)
treeb14d0260125cae28b25b12104d5f6c412c082d11
parent19079cd8a18e2ddf3696b1fcb9eb14f27d785e15 (diff)
downloadperlweeklychallenge-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.txt1
-rwxr-xr-xchallenge-342/jaldhar-h-vyas/perl/ch-1.pl38
-rwxr-xr-xchallenge-342/jaldhar-h-vyas/perl/ch-2.pl16
-rwxr-xr-xchallenge-342/jaldhar-h-vyas/raku/ch-1.raku38
-rwxr-xr-xchallenge-342/jaldhar-h-vyas/raku/ch-2.raku18
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