aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-07-08 17:12:24 +0100
committerGitHub <noreply@github.com>2025-07-08 17:12:24 +0100
commiteb91b5ca3d9f162b147ba570df3aec568fe4cadb (patch)
treeb2032b0e52061fbd99de05c2381ccc989080fdf4
parent422baf7b0fe7ad9008995d5ca3573631113f5db1 (diff)
parent08e73f7edcf12b164054529cac1df176b608391d (diff)
downloadperlweeklychallenge-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.pl10
-rw-r--r--challenge-329/kjetillll/perl/ch-2.pl72
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