aboutsummaryrefslogtreecommitdiff
path: root/challenge-331
diff options
context:
space:
mode:
authorAlexander Karelas <karjala@cpan.org>2025-07-21 10:12:05 +0300
committerAlexander Karelas <karjala@cpan.org>2025-07-21 10:12:05 +0300
commit2a1495b99a027801a82f3df4c524188e451d8664 (patch)
tree04e45d1148f930d19d3ff2c96bb1fccf28288eab /challenge-331
parente0f7e800fc8f1b2cb50896852a0a3ed61980f510 (diff)
downloadperlweeklychallenge-club-2a1495b99a027801a82f3df4c524188e451d8664.tar.gz
perlweeklychallenge-club-2a1495b99a027801a82f3df4c524188e451d8664.tar.bz2
perlweeklychallenge-club-2a1495b99a027801a82f3df4c524188e451d8664.zip
solutions to 331
Diffstat (limited to 'challenge-331')
-rwxr-xr-xchallenge-331/alexander-karelas/perl/ch-1.pl16
-rwxr-xr-xchallenge-331/alexander-karelas/perl/ch-2.pl21
2 files changed, 37 insertions, 0 deletions
diff --git a/challenge-331/alexander-karelas/perl/ch-1.pl b/challenge-331/alexander-karelas/perl/ch-1.pl
new file mode 100755
index 0000000000..392c84dcf8
--- /dev/null
+++ b/challenge-331/alexander-karelas/perl/ch-1.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+
+use v5.42;
+
+use Test2::V0;
+
+sub ll ($string) {
+ my ($word) = $string =~ /(\w+)\s*\z/;
+ return length $word;
+}
+
+is ll("The Weekly Challenge"), 9, 'Example 1';
+is ll(" Hello World "), 5, 'Example 2';
+is ll("Let's begin the fun"), 3, 'Example 3';
+
+done_testing;
diff --git a/challenge-331/alexander-karelas/perl/ch-2.pl b/challenge-331/alexander-karelas/perl/ch-2.pl
new file mode 100755
index 0000000000..5ca3d6029d
--- /dev/null
+++ b/challenge-331/alexander-karelas/perl/ch-2.pl
@@ -0,0 +1,21 @@
+#!/usr/bin/env perl
+
+use v5.42;
+
+use Test2::V0;
+
+sub buddy_strings ($str1, $str2) {
+ $str1 ne $str2 or return $str1 =~ /(\w).*\1/;
+ my @l = map [split //, $_], $str1, $str2;
+ $l[0]->@* == $l[1]->@* or return false;
+
+ my @diffs = grep { $_ !~ /(\w)\1/ } map "$l[0][$_]$l[1][$_]", 0 .. $#{$l[0]};
+ return @diffs == 2 && $diffs[0] eq reverse $diffs[1];
+}
+
+is buddy_strings('fuck', 'fcuk'), true, 'Example 1';
+is buddy_strings('love', 'love'), false, 'Example 2';
+is buddy_strings('fodo', 'food'), true, 'Example 3';
+is buddy_strings('feed', 'feed'), true, 'Example 4';
+
+done_testing;