diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-10-06 19:37:15 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-06 19:37:15 +0100 |
| commit | ff070a61bb43f3419b62524fa5f73c9d0be3541a (patch) | |
| tree | 0ac47aca986ea553e604d9449b1f26749bdb7697 | |
| parent | b7f71a5e9fa9b7054efb0740f229824ffffb0354 (diff) | |
| parent | d8b8ad8c9f8f568552e3af21dcc77119d09c4602 (diff) | |
| download | perlweeklychallenge-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.pl | 37 | ||||
| -rw-r--r-- | challenge-342/mahnkong/perl/ch-2.pl | 21 |
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"); |
