diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-07-22 00:18:30 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-22 00:18:30 +0100 |
| commit | dc925ce12b5ee07bdde7653d84afea61e445ad23 (patch) | |
| tree | 99fd3291be614ce818392e2fc799888b5ee5b947 | |
| parent | c9aab7a2b619c471f3f6b65ae548e9067000bd8e (diff) | |
| parent | 3cb2ce975524b9c6bfd18c3aa2f5061d32493f70 (diff) | |
| download | perlweeklychallenge-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.pl | 2 | ||||
| -rw-r--r-- | challenge-331/mauke/perl/ch-2.pl | 28 |
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'; |
