aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Neleigh <matthew.neleigh@gmail.com>2024-02-12 17:24:12 -0500
committerMatthew Neleigh <matthew.neleigh@gmail.com>2024-02-12 17:24:12 -0500
commitdccd6d5588e7e7c20583089a86278c308c36a8ec (patch)
treebe1e77c0780e57561e0d5a2c8e5ff1503ef05a47
parent70d02290b277d15dfce45354332569c6ca7c3bf0 (diff)
downloadperlweeklychallenge-club-dccd6d5588e7e7c20583089a86278c308c36a8ec.tar.gz
perlweeklychallenge-club-dccd6d5588e7e7c20583089a86278c308c36a8ec.tar.bz2
perlweeklychallenge-club-dccd6d5588e7e7c20583089a86278c308c36a8ec.zip
modified: challenge-256/mattneleigh/perl/ch-2.pl
-rwxr-xr-xchallenge-256/mattneleigh/perl/ch-2.pl32
1 files changed, 20 insertions, 12 deletions
diff --git a/challenge-256/mattneleigh/perl/ch-2.pl b/challenge-256/mattneleigh/perl/ch-2.pl
index c18b24970d..7769fe0fe7 100755
--- a/challenge-256/mattneleigh/perl/ch-2.pl
+++ b/challenge-256/mattneleigh/perl/ch-2.pl
@@ -43,22 +43,30 @@ exit(0);
################################################################################
sub merge_from_alternate_strings{
- my @str1 = split("", $ARG[0]);
- my @str2 = split("", $ARG[1]);
+ my $length1 = length($ARG[0]);
+ my $length2 = length($ARG[1]);
+ my $minimum_common_length = $length1 < $length2 ?
+ $length1
+ :
+ $length2;
my $merged = "";
- # Concatenate characters from @str1 and @str2
- # while neither is empty
- while(@str1 && @str2){
- $merged .= shift(@str1) . shift(@str2);
+ # Over the length the strings have in common,
+ # concatenate a pair of characters from each
+ for my $p (0 .. $minimum_common_length - 1){
+ $merged .=
+ substr($ARG[0], $p, 1)
+ .
+ substr($ARG[1], $p, 1);
}
- # At least one array is now empty; if anything
- # remains in either, concatenate what's left
- if(@str1){
- $merged .= join("", @str1);
- } elsif(@str2){
- $merged .= join("", @str2);
+ # At least one string has been used up; if one
+ # is longer than the minimum common length,
+ # concatenate the remaining characters from it
+ if($length1 > $minimum_common_length){
+ $merged .= substr($ARG[0], $minimum_common_length);
+ } elsif($length2 > $minimum_common_length){
+ $merged .= substr($ARG[1], $minimum_common_length);
}
return($merged);