From ddc0de5056fd4516e471c350d054b5c46e113202 Mon Sep 17 00:00:00 2001 From: E7-87-83 Date: Sun, 18 Aug 2024 23:23:05 +0800 Subject: Week 282 --- challenge-282/cheok-yin-fung/perl/ch-1.pl | 15 +++++++++++++++ challenge-282/cheok-yin-fung/perl/ch-2.pl | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 challenge-282/cheok-yin-fung/perl/ch-1.pl create mode 100644 challenge-282/cheok-yin-fung/perl/ch-2.pl diff --git a/challenge-282/cheok-yin-fung/perl/ch-1.pl b/challenge-282/cheok-yin-fung/perl/ch-1.pl new file mode 100644 index 0000000000..29083e409e --- /dev/null +++ b/challenge-282/cheok-yin-fung/perl/ch-1.pl @@ -0,0 +1,15 @@ +# The Weekly Challenge 282 +# Task 1 Good Integer +use v5.30.0; +use warnings; + +sub gi { + my $int = $_[0]; + return -1 if $int =~ /(\d)\1\1\1/; + return $1 x 3 if $int =~ /(\d)\1\1/; +} + +use Test::More tests=>3; +ok gi("12344456") eq "444"; +ok gi("1233334") eq -1; +ok gi("1020003") eq "000"; diff --git a/challenge-282/cheok-yin-fung/perl/ch-2.pl b/challenge-282/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..276e97afb5 --- /dev/null +++ b/challenge-282/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,18 @@ +# The Weekly Challenge 282 +# Task 2 Changing Keys +use v5.30.0; +use warnings; +use List::Util qw/reduce/; + +sub ck { + my $str = $_[0]; + $str = lc $str; + my @alphabets = split "", $str; + my $abc = reduce { substr($a,-1) eq $b ? $a : $a.$b } @alphabets; + return ((length $abc) - 1); +} + +use Test::More tests=>3; +ok ck("pPeERrLl") == 3; +ok ck("rRr") == 0; +ok ck("GoO") == 1; -- cgit From 7c1173d7c6a6edd9f666dab8fae97d1deee3b65e Mon Sep 17 00:00:00 2001 From: E7-87-83 Date: Sun, 18 Aug 2024 23:25:15 +0800 Subject: add null string case in ch-2.pl --- challenge-282/cheok-yin-fung/perl/ch-2.pl | 1 + 1 file changed, 1 insertion(+) diff --git a/challenge-282/cheok-yin-fung/perl/ch-2.pl b/challenge-282/cheok-yin-fung/perl/ch-2.pl index 276e97afb5..ed2afa15b3 100644 --- a/challenge-282/cheok-yin-fung/perl/ch-2.pl +++ b/challenge-282/cheok-yin-fung/perl/ch-2.pl @@ -6,6 +6,7 @@ use List::Util qw/reduce/; sub ck { my $str = $_[0]; + return 0 if $str eq ""; $str = lc $str; my @alphabets = split "", $str; my $abc = reduce { substr($a,-1) eq $b ? $a : $a.$b } @alphabets; -- cgit