From f22989ddff23d97b7d29a26a846164a8675e67bb Mon Sep 17 00:00:00 2001 From: wanderdoc Date: Fri, 3 Oct 2025 12:23:43 +0200 Subject: Create ch-1.pl --- challenge-341/wanderdoc/perl/ch-1.pl | 62 ++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 challenge-341/wanderdoc/perl/ch-1.pl diff --git a/challenge-341/wanderdoc/perl/ch-1.pl b/challenge-341/wanderdoc/perl/ch-1.pl new file mode 100644 index 0000000000..f61d965de6 --- /dev/null +++ b/challenge-341/wanderdoc/perl/ch-1.pl @@ -0,0 +1,62 @@ +#!perl +use strict; +use warnings FATAL => qw(all); + +=prompt +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. + +Example 1 + +Input: $str = 'Hello World', @keys = ('d') +Output: 1 + +With broken key 'd', we can only type the word 'Hello'. + + +Example 2 + +Input: $str = 'apple banana cherry', @keys = ('a', 'e') +Output: 0 + + +Example 3 + +Input: $str = 'Coding is fun', @keys = () +Output: 3 + +No keys broken. + + +Example 4 + +Input: $str = 'The Weekly Challenge', @keys = ('a','b') +Output: 2 + + +Example 5 + +Input: $str = 'Perl and Python', @keys = ('p') +Output: 1 + +=cut + + +use Test2::V0 -no_srand => 1; +is(can_print('Hello World', ['d']), 1, 'Example 1'); +is(can_print('apple banana cherry', ['a', 'e']), 0, 'Example 2'); +is(can_print('coding is fun', []), 3, 'Example 3'); +is(can_print('The Weekly Challenge', ['a','b']), 2, 'Example 4'); +is(can_print('Perl and Python', ['p']), 1, 'Example 5'); +done_testing(); + + + + +sub can_print +{ + my ($str, $keys_aref) = @_; + my $keys_str = join('|', @$keys_aref); + my $keys_re = length($keys_str) ? qr/$keys_str/i : qr/ /; + return scalar(grep {!/$keys_re/} split(/\s/, $str)); +} -- cgit