diff options
| author | Bob Lied <boblied+github@gmail.com> | 2025-04-19 20:36:27 -0500 |
|---|---|---|
| committer | Bob Lied <boblied+github@gmail.com> | 2025-04-19 20:36:27 -0500 |
| commit | 6b8ff00aac12d5bc2f0c2f697b041f0dd9b66974 (patch) | |
| tree | 419e39dc3ceed818a6c92e4f95605a81af8f4163 | |
| parent | 9c0ef957066520d8d2f6943e961469488166b1d1 (diff) | |
| download | perlweeklychallenge-club-6b8ff00aac12d5bc2f0c2f697b041f0dd9b66974.tar.gz perlweeklychallenge-club-6b8ff00aac12d5bc2f0c2f697b041f0dd9b66974.tar.bz2 perlweeklychallenge-club-6b8ff00aac12d5bc2f0c2f697b041f0dd9b66974.zip | |
Task 2 eliminate variables
| -rw-r--r-- | challenge-317/bob-lied/perl/ch-2.pl | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/challenge-317/bob-lied/perl/ch-2.pl b/challenge-317/bob-lied/perl/ch-2.pl index 631ed7c116..cc96a89797 100644 --- a/challenge-317/bob-lied/perl/ch-2.pl +++ b/challenge-317/bob-lied/perl/ch-2.pl @@ -19,8 +19,6 @@ use v5.40; -use List::MoreUtils qw/zip6 duplicates/; - use Getopt::Long; my $Verbose = false; my $DoTest = false; @@ -44,7 +42,6 @@ say isFriend(@ARGV) ? "true" : "false"; #============================================================================= sub isFriend($str1, $str2) { - my @char1 = split(//, $str1); if ( length($str1) != length($str2) ) { return false; @@ -52,20 +49,19 @@ sub isFriend($str1, $str2) elsif ( $str1 eq $str2 ) { # There must be a repeated letter that can be swapped for itself - return duplicates(@char1) > 0; + use List::MoreUtils qw/duplicates/; + return duplicates(split(//, $str1)) > 0; } else { - my @char2 = split(//, $str2); - # Make pairs of characters and check for differences. - my @diff = grep { $_->[0] ne $_->[1] } zip6(@char1, @char2); - - # There must be exactly two differences. - return false if @diff != 2; + use List::Util qw/zip/; + my @diff = grep { $_->[0] ne $_->[1] } + zip( [split(//, $str1)], [split(//, $str2)] ); - # Check that the two differences are matched pairs. - return $diff[0][0] eq $diff[1][1] && $diff[0][1] eq $diff[1][0]; + # There must be exactly two differences that can be swapped. + return @diff == 2 + && $diff[0][0] eq $diff[1][1] && $diff[0][1] eq $diff[1][0]; } } |
