aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Karelas <karjala@cpan.org>2025-07-07 15:06:12 +0300
committerAlexander Karelas <karjala@cpan.org>2025-07-07 15:06:12 +0300
commit210ff771a0928065db53c45aee1099538fb8d935 (patch)
tree89560c64da5b70c181e546ba0066fc35962c573e
parentbd7fce4bd5d085c209a213f2daca1e79799c9e87 (diff)
downloadperlweeklychallenge-club-210ff771a0928065db53c45aee1099538fb8d935.tar.gz
perlweeklychallenge-club-210ff771a0928065db53c45aee1099538fb8d935.tar.bz2
perlweeklychallenge-club-210ff771a0928065db53c45aee1099538fb8d935.zip
solutions to challenge 329
-rwxr-xr-xchallenge-329/alexander-karelas/perl/ch-1.pl17
-rwxr-xr-xchallenge-329/alexander-karelas/perl/ch-2.pl32
2 files changed, 49 insertions, 0 deletions
diff --git a/challenge-329/alexander-karelas/perl/ch-1.pl b/challenge-329/alexander-karelas/perl/ch-1.pl
new file mode 100755
index 0000000000..145016e996
--- /dev/null
+++ b/challenge-329/alexander-karelas/perl/ch-1.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/env perl
+
+use v5.42;
+
+use Test2::V0;
+use List::Util 'uniq';
+
+sub counter_integers ($str) {
+ $str =~ s/[^\d]/ /ag;
+ return uniq($str =~ /\d+/ag);
+}
+
+is [counter_integers("the1weekly2challenge2")], [1, 2], 'Example 1';
+is [counter_integers("go21od1lu5c7k")], [21, 1, 5, 7], 'Example 2';
+is [counter_integers("4p3e2r1l")], [4, 3, 2, 1], 'Example 3';
+
+done_testing; \ No newline at end of file
diff --git a/challenge-329/alexander-karelas/perl/ch-2.pl b/challenge-329/alexander-karelas/perl/ch-2.pl
new file mode 100755
index 0000000000..e1502ca914
--- /dev/null
+++ b/challenge-329/alexander-karelas/perl/ch-2.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/env perl
+
+use v5.42;
+
+use List::Util 'uniq';
+use feature 'keyword_all';
+use Test2::V0;
+no warnings 'experimental::keyword_all';
+
+sub _is_nice ($str) {
+ my @letters = uniq(map lc, split //, $str);
+ return all { $str =~ /$_/ and $str =~ uc($_) } @letters;
+}
+
+sub nice_string ($str) {
+ my $longest_substring = '';
+ for (my $i = 0; $i <= length($str); $i++) {
+ for (my $j = $i; $j <= length($str); $j++) {
+ my $substring = substr($str, $i, ($j - $i));
+ if (_is_nice($substring) and length($substring) > length($longest_substring)) {
+ $longest_substring = $substring;
+ }
+ }
+ }
+ return $longest_substring;
+}
+
+is nice_string('YaaAho'), 'aaA', 'Example 1';
+is nice_string('cC'), 'cC', 'Example 2';
+is nice_string('A'), '', 'Example 3';
+
+done_testing;