diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-11-07 23:53:36 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-07 23:53:36 +0000 |
| commit | 51d525fe8482e11ebdd80b409d56becdc71495b0 (patch) | |
| tree | 778206dcc9d2c3ca0b67bb65f0d4da0896dfc893 | |
| parent | 656d05b04a666534e66a96b49fc11ee7ed8fb097 (diff) | |
| parent | 16dc4478f22c5a77c42c74891730e885c920cb82 (diff) | |
| download | perlweeklychallenge-club-51d525fe8482e11ebdd80b409d56becdc71495b0.tar.gz perlweeklychallenge-club-51d525fe8482e11ebdd80b409d56becdc71495b0.tar.bz2 perlweeklychallenge-club-51d525fe8482e11ebdd80b409d56becdc71495b0.zip | |
Merge pull request #12981 from kjetillll/challenge-346-kjetillll
https://theweeklychallenge.org/blog/perl-weekly-challenge-346/
| -rw-r--r-- | challenge-346/kjetillll/perl/ch-1.pl | 64 | ||||
| -rw-r--r-- | challenge-346/kjetillll/perl/ch-2.pl | 17 |
2 files changed, 81 insertions, 0 deletions
diff --git a/challenge-346/kjetillll/perl/ch-1.pl b/challenge-346/kjetillll/perl/ch-1.pl new file mode 100644 index 0000000000..1aab154ad5 --- /dev/null +++ b/challenge-346/kjetillll/perl/ch-1.pl @@ -0,0 +1,64 @@ +sub f { + my($s, $max_so_far) = (@_, 0); + $s =~ s/ ( \( (?1)* \) )+ //x + ? f( $s, length($&) > $max_so_far ? length($&) : $max_so_far ) + : $max_so_far +} + +print f( $$_[0] ) == $$_[1] ? "ok\n" : "error\n" for map [ /\S+/g ], split /\n/, <<''; +(()()) 6 +)()()) 4 +((()))()(((() 8 +))))((()( 2 +()(() 2 +()()(()()() 6 +)))))))))))))))))))))))))))))) 0 +))()))()(()((((((()((()(()(((( 2 +)())))())))((((((())(((((())(( 4 +((()((())(()()(((((()(())(()() 6 +))))((()()))))()()(()(()(((()( 8 +()())))((((()))))))))((()))((( 10 +)()((((()))()(()((()((()))(()) 12 +)(())((())))((((())((()()()))( 14 +((()(())()()))())(((()((())))) 16 +))()))(()(((()))()(()()))((()) 18 +((()(()()(()(()()()(((())()))) 20 +((()))((()()()((())((()))()))( 22 +()(((())))((()(())()))())(())) 24 +)((((())())((())((((()())))))( 26 +(()()()(())((())(()())()))())( 28 +(()()(((()())(((()))))(())())) 30 +)))())()))(()(()((((()(((()((((((((((((((((((((((((((()((((()((((()( 2 +))))(()))))()))())()))(()()(((((((()(((((())((((())((()((())(()(()(( 4 +)()())(())())((()))))(((()())(((())(((((((((((())(()()((()(())(()((( 6 +)()))()()))()())))(()()(((()(()(()((())(((()()()(()((()(()(())()(()( 8 +))()()))))()())))()())))(())()()())))(())(())))))())))())()(()(((()) 10 +)))()())(()()))))(())(()))((())())()())((()()()(((((())())(()()(((() 12 +())((())()))))))))()))()))((()))((()))()((())()()((((()))((((((())(( 14 +)())(()))))))()(((()))())))(())())((()((()))))()())))(()(()))))(()(( 16 +(())))(()())((())((((()))(()()((((()(())))(((()(((())((()()())(()))( 18 +))((()()(((()))))(()(((()(()))(())(()()(()((((())))(()())()()()((((( 20 +))(()()))))((()((((()))))())(())))()()((())((()(())(()(())((()()()(( 22 +)()())())(())))))(()()((())((()())))))((()(()((())((()(())())()()))( 24 +()))(()()())))(())(()(()(()(()))())((((()()(())()((()))(()()(()))((( 26 +))))()))())())()()()(((((())())))()()())()((((((((()(()(((()(((((((( 28 +()((((()((()))())(())(((((((()(()(())(((())()))))())))(((()))((()()( 30 +)()(((((()))((()(()()))(())((()(((()()()(()))())())(()()()))((()()() 32 +((())))()))(()(((()((()))(())())))((())))(())))(()())((())(())(()()( 34 +((()())(()((())))))((((())((())))(((((()))()()))())(()))((()(((((()) 36 +)()((()()))()(((()((()())())((()))))()))))))()(()()(())()))))()))()( 38 +(()()((())))((()())()((((()))(()))())())))()(()()(())))()((()()(()(( 40 +)((())()()())()(()()(()()(()(())((()()()(())((()))())(()(()))((()))) 42 +)(())(()))((())()())()((())()()(((()((())()())()(())())((())()))())( 44 +)()(()))()))))))))())(()(((()((()())()))(((()))()()()(()))(()()))()) 46 +)(())())))()()((((()()(((((()()(())()))))))())()))((()))()))))(())(( 48 +)()))())(()(())(()()((())()()()(()()())())(())())())(())())))((())() 50 +(()))()((()()(()((()()()))()())((()))((())()(())))()(())))))((((()() 52 +))(()))())())((()(())(()()())((())()()))()((()(()))())(()())((())()) 54 +(((())(())((((())(()(((()(())))))(())))())()())(()()))())((()())(()( 56 +(((()()())()(((())((()()()((()())))((()(()))))))()()))()()))()())))( 58 +()((((()()(((((())())())))())())(())()(((())(((()))))((())))()()((() 60 +(())(((((())())()())((()(())((((())()())()())))((())(()(())())()())) 62 +))((((())())(()())(()())(()()()(()((())))(()))(()()(())(()))))(())(( 64 +)(()(()()(()))((()((())()(((()(()))))((((())))))())(((())(()())))))( 66 +(((())))(()(()())(()(())))(((((((())()())))()(((()(()())()))))()))() 68 diff --git a/challenge-346/kjetillll/perl/ch-2.pl b/challenge-346/kjetillll/perl/ch-2.pl new file mode 100644 index 0000000000..eb9b945f1d --- /dev/null +++ b/challenge-346/kjetillll/perl/ch-2.pl @@ -0,0 +1,17 @@ +sub f { + my($str, $target) = @_; + grep !/0\d/ && eval == $target, + map $str =~ s{ \d\B }{ [ $& . ['','+','-','*']->[$_ % 4], $_ >>= 2 ]->[0] }gxer, + 0 .. 4 ** length($str) / 4 - 1 +} + +use Test::More; +is_deeply [ sort( f( @$_{'str','target'} ) ) ], + [ sort( @{ @$_{'output'} } ) ] +for {str => "123", target => 6, output => ["1*2*3", "1+2+3"] }, + {str => "105", target => 5, output => ["1*0+5", "10-5"] }, + {str => "232", target => 8, output => ["2*3+2", "2+3*2"] }, + {str => "1234", target => 10, output => ["1*2*3+4", "1+2+3+4"] }, + {str => "1001", target => 2, output => ["1+0*0+1", "1+0+0+1", "1+0-0+1", "1-0*0+1", "1-0+0+1", "1-0-0+1"] }; +done_testing; + |
