aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Lied <boblied+github@gmail.com>2025-04-19 20:36:27 -0500
committerBob Lied <boblied+github@gmail.com>2025-04-19 20:36:27 -0500
commit6b8ff00aac12d5bc2f0c2f697b041f0dd9b66974 (patch)
tree419e39dc3ceed818a6c92e4f95605a81af8f4163
parent9c0ef957066520d8d2f6943e961469488166b1d1 (diff)
downloadperlweeklychallenge-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.pl20
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];
}
}