aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-07-22 00:18:30 +0100
committerGitHub <noreply@github.com>2025-07-22 00:18:30 +0100
commitdc925ce12b5ee07bdde7653d84afea61e445ad23 (patch)
tree99fd3291be614ce818392e2fc799888b5ee5b947
parentc9aab7a2b619c471f3f6b65ae548e9067000bd8e (diff)
parent3cb2ce975524b9c6bfd18c3aa2f5061d32493f70 (diff)
downloadperlweeklychallenge-club-dc925ce12b5ee07bdde7653d84afea61e445ad23.tar.gz
perlweeklychallenge-club-dc925ce12b5ee07bdde7653d84afea61e445ad23.tar.bz2
perlweeklychallenge-club-dc925ce12b5ee07bdde7653d84afea61e445ad23.zip
Merge pull request #12380 from mauke/challenge-331
add perl solutions for 331
-rw-r--r--challenge-331/mauke/perl/ch-1.pl2
-rw-r--r--challenge-331/mauke/perl/ch-2.pl28
2 files changed, 30 insertions, 0 deletions
diff --git a/challenge-331/mauke/perl/ch-1.pl b/challenge-331/mauke/perl/ch-1.pl
new file mode 100644
index 0000000000..fe86ad9f42
--- /dev/null
+++ b/challenge-331/mauke/perl/ch-1.pl
@@ -0,0 +1,2 @@
+#!/usr/bin/env -S perl -lp
+$_=/\b(\w+)\W*\z/?length$1:0
diff --git a/challenge-331/mauke/perl/ch-2.pl b/challenge-331/mauke/perl/ch-2.pl
new file mode 100644
index 0000000000..afde7757b1
--- /dev/null
+++ b/challenge-331/mauke/perl/ch-2.pl
@@ -0,0 +1,28 @@
+use v5.40;
+
+sub has_duplicate_chars($string) {
+ my %seen;
+ for my $c (split //, $string) {
+ return true
+ if $seen{$c}++;
+ }
+ false
+}
+
+sub are_buddies($source, $target) {
+ my $delta = $source ^. $target;
+ $delta =~ /[^\0]/g
+ or return has_duplicate_chars($source);
+ my $p1 = $-[0];
+ $delta =~ /[^\0]/g
+ or return false;
+ my $p2 = $-[0];
+ return substr($source, $p1, 1) eq substr($target, $p2, 1)
+ && substr($source, $p2, 1) eq substr($target, $p1, 1)
+ && scalar($delta !~ /[^\0]/g);
+}
+
+@ARGV == 2
+ or die "Usage: $0 SOURCE TARGET\n";
+my ($fst, $snd) = @ARGV;
+say are_buddies($fst, $snd) ? 'true' : 'false';