From 55e952e2376a3e7817e2846d2fa089cdc38b8836 Mon Sep 17 00:00:00 2001 From: CY Fung Date: Mon, 10 Oct 2022 16:08:51 +0800 Subject: Week 186 Perl Solutions --- challenge-186/cheok-yin-fung/perl/ch-1.pl | 20 ++++++++++++++++++++ challenge-186/cheok-yin-fung/perl/ch-2.pl | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 challenge-186/cheok-yin-fung/perl/ch-1.pl create mode 100644 challenge-186/cheok-yin-fung/perl/ch-2.pl diff --git a/challenge-186/cheok-yin-fung/perl/ch-1.pl b/challenge-186/cheok-yin-fung/perl/ch-1.pl new file mode 100644 index 0000000000..27d1b4c16f --- /dev/null +++ b/challenge-186/cheok-yin-fung/perl/ch-1.pl @@ -0,0 +1,20 @@ +use v5.30.0; +use warnings; + +sub zip { + my @all = @_; + my $size = scalar @all / 2; + my @a = @_[0..$size-1]; + my @b = @_[$size.. $#all]; + # say @a; say @b; + my @ans; + ($ans[2*$_],$ans[2*$_+1]) = ($a[$_],$b[$_]) for 0..$size-1; + return @ans; +} + +use Test::More tests=>2; +use Test::Deep; +my @a = qw/1 2 3/; +my @b = qw/a b c/; +cmp_deeply( [zip(@a, @b)], [qw/1 a 2 b 3 c/]); +cmp_deeply( [zip(@b, @a)], [qw/a 1 b 2 c 3/]); diff --git a/challenge-186/cheok-yin-fung/perl/ch-2.pl b/challenge-186/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..34bf7b847c --- /dev/null +++ b/challenge-186/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,20 @@ +use v5.30.0; +use charnames (); +use utf8; + +sub ch_latin { + my $name = charnames::viacode(ord($_[0])); + return $1 if $name =~ /^LATIN CAPITAL LETTER (\w)/; + return lc($1) if $name =~ /^LATIN SMALL LETTER (\w)/; + return $_[0]; +} + +sub makeover { + return join "", map {ch_latin $_} split "", $_[0] +} + +use Test::More tests=>4; +ok makeover("ÃÊÍÒÙ") eq "AEIOU"; +ok makeover("âÊíÒÙ") eq "aEiOU"; +ok makeover("chữ Quốc ngữ") eq "chu Quoc ngu"; +ok makeover("Paul Erdős") eq "Paul Erdos"; -- cgit