diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-07-08 17:12:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-08 17:12:24 +0100 |
| commit | eb91b5ca3d9f162b147ba570df3aec568fe4cadb (patch) | |
| tree | b2032b0e52061fbd99de05c2381ccc989080fdf4 | |
| parent | 422baf7b0fe7ad9008995d5ca3573631113f5db1 (diff) | |
| parent | 08e73f7edcf12b164054529cac1df176b608391d (diff) | |
| download | perlweeklychallenge-club-eb91b5ca3d9f162b147ba570df3aec568fe4cadb.tar.gz perlweeklychallenge-club-eb91b5ca3d9f162b147ba570df3aec568fe4cadb.tar.bz2 perlweeklychallenge-club-eb91b5ca3d9f162b147ba570df3aec568fe4cadb.zip | |
Merge pull request #12314 from kjetillll/challenge-329-kjetillll
https://theweeklychallenge.org/blog/perl-weekly-challenge-329/
| -rw-r--r-- | challenge-329/kjetillll/perl/ch-1.pl | 10 | ||||
| -rw-r--r-- | challenge-329/kjetillll/perl/ch-2.pl | 72 |
2 files changed, 82 insertions, 0 deletions
diff --git a/challenge-329/kjetillll/perl/ch-1.pl b/challenge-329/kjetillll/perl/ch-1.pl new file mode 100644 index 0000000000..5198f93c48 --- /dev/null +++ b/challenge-329/kjetillll/perl/ch-1.pl @@ -0,0 +1,10 @@ + +sub f { + my %seen; + grep !$seen{$_}++, shift() =~ /\d+/g +} + +print join(' ', f("the1weekly2challenge2")) eq '1 2' ? "ok\n" : "err\n"; +print join(' ', f("go21od1lu5c7k")) eq '21 1 5 7' ? "ok\n" : "err\n"; +print join(' ', f("4p3e2r1l")) eq '4 3 2 1' ? "ok\n" : "err\n"; + diff --git a/challenge-329/kjetillll/perl/ch-2.pl b/challenge-329/kjetillll/perl/ch-2.pl new file mode 100644 index 0000000000..31f77ab0fc --- /dev/null +++ b/challenge-329/kjetillll/perl/ch-2.pl @@ -0,0 +1,72 @@ +use strict; use warnings; + +sub is_nice { + my %uclc; + $uclc{ lc() } |= 2-/[a-z]/ for split //, pop; + ! grep $_ != 3, values %uclc +} + +sub f1 { + my $str = shift(); + my $l = length($str); + my($max, $longest_nice) = (1, ""); + for my $offset ( 0 .. $l-1 ){ + for my $length ( $max+1 .. $l-$offset ){ + my $substr = substr($str, $offset, $length); + ($max, $longest_nice) = ($length, $substr) if is_nice($substr) + } + } + $longest_nice +} + +sub f2 { + my @fifo = @_; + my %seen; + while(@fifo){ + my $substr = shift @fifo; + next if $seen{$substr}++; + return $substr if is_nice($substr); + push @fifo, substr $substr, 1, length($substr)-1; + push @fifo, substr $substr, 0, length($substr)-1; + } + return ""; +} + +sub f3 { + my @q = @_; + my %seen; + shift(@q) =~ /^(.)(.*)(.)$/ and !$seen{$&}++ and is_nice($&) ? return($&) : push @q, "$1$2", "$2$3" while @q; + ""; +} + +/(\w+) *(\w*)/, +print f1($1) eq $2 + && f2($1) eq $2 + && f3($1) eq $2 +? "ok f('$1') eq '$2'\n" : "err\n" +for split /\n/, <<""; +YaaAho aaA +cC cC +A +jwWcXSjtdNHsaCcKCopYkCNnrCRqQc CNnrCRqQc +sfqZdwBJFrVDzGpqozoODyOdYkvFtP oODyOdY +DppVvddvPzBKFNCGxszuYtOGlRZDkl DppVvddvP +ijOhDVbarrILnIDVhsNTDVdRvrjJeF DVdRvrjJ +vDDajqCjFwvJyccKZpfPBzFbdYJsyI ZpfPBzFb +hhlJWCaiHachIhAHVEGJefJaYpDRUi CaiHachIhAH +SKTxVZzvyzYjPjjuzQPdMusCIqbEcS VZzvyzY +cRBDMpmlSsoxOmXMRffooPwMpBiyGj SsoxOmXM +kLPHzlBKBLFbBfkZYgyKaqQnwPQumk zlBKBLFbBfkZ +NIiEEBusdmDlxLcOCoXMBvyaZyoDOc dmDlxLcOCoXM +kIiIGJOMUyBnZHbcjolBXyCxLIiYbc lBXyCxLIiYbc +nnfxTdBorUByCZIXBdFJIifqkKQjOq FJIifqkKQj +alGbtXgoGvJflUGPNcJcJvPykrEdDt dD +jrjeJgkyKRhnBmlUVtiCgKgForwKGw +umlNGkaqCsJQMCLyrgOoGOFfrCabsA gOoGOFf +zyWBmItnzDpPdfFFBshbJuxEQixsGj DpPdfFF +CSihJFISLSYyysisIlSJLdajPmstoS ISLSYyysisIlS +kAPHhpVPCvcpVatKbDTM APHhpVPCvcpVa +UImyYBobiFfIOoFMkMWU ImyYBobiFfIOoFM +OmRmFMhZkHofzOfKdoDF mFMhZkHofzOfKdoDF +XuIEUUxieYqDxxbpIiJK XuIEUUxie +XuIEUUxie XuIEUUxie |
