aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-09-29 12:37:36 +0100
committerGitHub <noreply@github.com>2025-09-29 12:37:36 +0100
commitfbe5df3ffb6d341f13cf6fa161987abb8f21c7ae (patch)
treef9ff8238648716d04c2827659278c8902518f546
parent413d7a735036e755b9c9f296021d70099247e551 (diff)
parentdcb9a699f65ea3d7663152c29bd64b8a6cf6ac0d (diff)
downloadperlweeklychallenge-club-fbe5df3ffb6d341f13cf6fa161987abb8f21c7ae.tar.gz
perlweeklychallenge-club-fbe5df3ffb6d341f13cf6fa161987abb8f21c7ae.tar.bz2
perlweeklychallenge-club-fbe5df3ffb6d341f13cf6fa161987abb8f21c7ae.zip
Merge pull request #12753 from PerlBoy1967/branch-for-challenge-341
w341 - Task 1 & 2 (Perl)
-rwxr-xr-xchallenge-341/perlboy1967/perl/ch1.pl34
-rwxr-xr-xchallenge-341/perlboy1967/perl/ch2.pl33
2 files changed, 67 insertions, 0 deletions
diff --git a/challenge-341/perlboy1967/perl/ch1.pl b/challenge-341/perlboy1967/perl/ch1.pl
new file mode 100755
index 0000000000..a59ba86df6
--- /dev/null
+++ b/challenge-341/perlboy1967/perl/ch1.pl
@@ -0,0 +1,34 @@
+#!/bin/perl
+
+=pod
+
+L<https://theweeklychallenge.org/blog/perl-weekly-challenge-341#TASK1>
+
+Author: Niels 'PerlBoy' van Dijke
+
+Task 1: Broken Keyboard
+Submitted by: Mohammad Sajid Anwar
+
+You are given a string containing English letters only and also you are given broken keys.
+
+Write a script to return the total words in the given sentence can be typed completely.
+
+=cut
+
+use Test2::V0 qw(-no_srand);
+use exact 'v5.32', -signatures;
+
+sub brokenKeyboard ($str,@keys) {
+ my @w = split /\s+/,$str;
+ return scalar @w if (@keys == 0);
+ my $re = '['.join('',@keys).']';
+ scalar grep !/$re/i, @w;
+}
+
+is(brokenKeyboard('Hello World',qw(d)),1,'Example 1');
+is(brokenKeyboard('apple banana cherry',qw(a e)),0,'Example 2');
+is(brokenKeyboard('Coding is fun',qw()),3,'Example 3');
+is(brokenKeyboard('The Weekly Challenge',qw(ab)),2,'Example 4');
+is(brokenKeyboard('Perl and Python',qw(p)),1,'Example 5');
+
+done_testing;
diff --git a/challenge-341/perlboy1967/perl/ch2.pl b/challenge-341/perlboy1967/perl/ch2.pl
new file mode 100755
index 0000000000..f3dbfcc126
--- /dev/null
+++ b/challenge-341/perlboy1967/perl/ch2.pl
@@ -0,0 +1,33 @@
+#!/bin/perl
+
+=pod
+
+L<https://theweeklychallenge.org/blog/perl-weekly-challenge-341#TASK2>
+
+Author: Niels 'PerlBoy' van Dijke
+
+Task 2: Reverse Prefix
+Submitted by: Mohammad Sajid Anwar
+
+You are given a string, $str and a character in the given string, $char.
+
+Write a script to reverse the prefix upto the first occurrence of the given
+$char in the given string $str and return the new string.
+
+=cut
+
+use Test2::V0 qw(-no_srand);
+use exact 'v5.32', -signatures;
+
+sub reversePrefix ($str,$char) {
+ return reverse($1).$2 if ($str =~ m#^(.+?$char)(.*)#);
+ return $str;
+}
+
+is(reversePrefix('programming','g'),'gorpramming','Example 1');
+is(reversePrefix('hello','h'),'hello','Example 2');
+is(reversePrefix('abcdefghij','h'),'hgfedcbaij','Example 3');
+is(reversePrefix('reverse','s'),'srevere','Example 4');
+is(reversePrefix('perl','r'),'repl','Example 5');
+
+done_testing;