aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-10-06 19:37:15 +0100
committerGitHub <noreply@github.com>2025-10-06 19:37:15 +0100
commitff070a61bb43f3419b62524fa5f73c9d0be3541a (patch)
tree0ac47aca986ea553e604d9449b1f26749bdb7697
parentb7f71a5e9fa9b7054efb0740f229824ffffb0354 (diff)
parentd8b8ad8c9f8f568552e3af21dcc77119d09c4602 (diff)
downloadperlweeklychallenge-club-ff070a61bb43f3419b62524fa5f73c9d0be3541a.tar.gz
perlweeklychallenge-club-ff070a61bb43f3419b62524fa5f73c9d0be3541a.tar.bz2
perlweeklychallenge-club-ff070a61bb43f3419b62524fa5f73c9d0be3541a.zip
Merge pull request #12801 from mahnkong/challenge-342
Challenge 342
-rw-r--r--challenge-342/mahnkong/perl/ch-1.pl37
-rw-r--r--challenge-342/mahnkong/perl/ch-2.pl21
2 files changed, 58 insertions, 0 deletions
diff --git a/challenge-342/mahnkong/perl/ch-1.pl b/challenge-342/mahnkong/perl/ch-1.pl
new file mode 100644
index 0000000000..ba26ff02bc
--- /dev/null
+++ b/challenge-342/mahnkong/perl/ch-1.pl
@@ -0,0 +1,37 @@
+use strict;
+use warnings;
+use feature 'signatures';
+use Test::More 'no_plan';
+
+sub run($string) {
+ my @digits;
+ my @chars;
+ my $result;
+
+ foreach my $c (split//, $string) {
+ my $a = $c =~ /\d/ ? \@digits : \@chars;
+ push @$a, $c;
+ }
+
+ my $digits_length = scalar(@digits);
+ my $chars_length = scalar(@chars);
+
+ return "" if abs($digits_length - $chars_length) > 1;
+
+ @chars = sort { $a cmp $b } @chars;
+ @digits = sort { $a cmp $b } @digits;
+
+ my ($first, $second) = $digits_length < $chars_length ? (\@chars, \@digits) : (\@digits, \@chars);
+ for (my $i = 0; $i < scalar(@$first); $i++) {
+ $result .= $first->[$i];
+ $result .= $second->[$i] if exists $second->[$i];
+ }
+
+ return $result;
+}
+
+is(run("a0b1c2"), "0a1b2c", "Example 1");
+is(run("abc12"), "a1b2c", "Example 2");
+is(run("0a2b1c3"), "0a1b2c3", "Example 3");
+is(run("1a23"), "", "Example 4");
+is(run("ab123"), "1a2b3", "Example 5");
diff --git a/challenge-342/mahnkong/perl/ch-2.pl b/challenge-342/mahnkong/perl/ch-2.pl
new file mode 100644
index 0000000000..d08ed6e197
--- /dev/null
+++ b/challenge-342/mahnkong/perl/ch-2.pl
@@ -0,0 +1,21 @@
+use strict;
+use warnings;
+use feature 'signatures';
+use Test::More 'no_plan';
+
+sub run($string) {
+ my $max = 0;
+ for (my $i = 1; $i < length($string); $i++) {
+ my $left = () = substr($string, 0, $i) =~ /0/g;
+ my $right = () = substr($string, $i, length($string)) =~ /1/g;
+ my $current = $left + $right;
+ $max = $current if $current > $max;
+ }
+ return $max;
+}
+
+is(run("0011"), 4, "Example 1");
+is(run("0000"), 3, "Example 2");
+is(run("1111"), 3, "Example 3");
+is(run("0101"), 3, "Example 4");
+is(run("011101"), 5, "Example 5");