diff options
| author | Alexander Karelas <karjala@cpan.org> | 2025-07-07 15:06:12 +0300 |
|---|---|---|
| committer | Alexander Karelas <karjala@cpan.org> | 2025-07-07 15:06:12 +0300 |
| commit | 210ff771a0928065db53c45aee1099538fb8d935 (patch) | |
| tree | 89560c64da5b70c181e546ba0066fc35962c573e | |
| parent | bd7fce4bd5d085c209a213f2daca1e79799c9e87 (diff) | |
| download | perlweeklychallenge-club-210ff771a0928065db53c45aee1099538fb8d935.tar.gz perlweeklychallenge-club-210ff771a0928065db53c45aee1099538fb8d935.tar.bz2 perlweeklychallenge-club-210ff771a0928065db53c45aee1099538fb8d935.zip | |
solutions to challenge 329
| -rwxr-xr-x | challenge-329/alexander-karelas/perl/ch-1.pl | 17 | ||||
| -rwxr-xr-x | challenge-329/alexander-karelas/perl/ch-2.pl | 32 |
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; |
