From 29ddc311efebb220f0786678fcec9b6a47ccbb7a Mon Sep 17 00:00:00 2001 From: mimosinnet Date: Sat, 1 May 2021 20:56:51 +0200 Subject: Solutions for challenge 110 --- challenge-110/mimosinnet/raku/ch-1.raku | 26 +++++++++++++++++++++++++ challenge-110/mimosinnet/raku/ch-2.raku | 22 +++++++++++++++++++++ challenge-110/mimosinnet/raku/names.txt | 5 +++++ challenge-110/mimosinnet/raku/phone_numbers.txt | 5 +++++ 4 files changed, 58 insertions(+) create mode 100644 challenge-110/mimosinnet/raku/ch-1.raku create mode 100644 challenge-110/mimosinnet/raku/ch-2.raku create mode 100644 challenge-110/mimosinnet/raku/names.txt create mode 100644 challenge-110/mimosinnet/raku/phone_numbers.txt diff --git a/challenge-110/mimosinnet/raku/ch-1.raku b/challenge-110/mimosinnet/raku/ch-1.raku new file mode 100644 index 0000000000..965f4f726a --- /dev/null +++ b/challenge-110/mimosinnet/raku/ch-1.raku @@ -0,0 +1,26 @@ +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-110/ + +grammar PhoneNumber { + token TOP { \s* \s } + token prefix { \d ** 4 | '+' \d\d | '(' \d\d ')' } + token number { \d ** 10 } +} + +sub challenge( Str $filename ) { + $filename.IO.lines.grep({ PhoneNumber.parse( $_) }); +} + +multi sub MAIN( Str $filename ) { + say 'OUTPUT: '; + challenge($filename).map( *.say ); +} + +multi sub MAIN( 'challenge' ) { + MAIN('phone_numbers.txt'); +} + +multi sub MAIN( 'test' ) is hidden-from-USAGE { + use Test; + is challenge('phone_numbers.txt'), ( '0044 1148820341', ' +44 1148820341', '(44) 1148820341'); + done-testing; +} diff --git a/challenge-110/mimosinnet/raku/ch-2.raku b/challenge-110/mimosinnet/raku/ch-2.raku new file mode 100644 index 0000000000..6aa0016fd1 --- /dev/null +++ b/challenge-110/mimosinnet/raku/ch-2.raku @@ -0,0 +1,22 @@ +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-110/ + +sub challenge( Str $filename ) { + [Z] $filename.IO.lines.map( *.split(',') ); +} + +multi sub MAIN( Str $filename ) { + say 'Output: '; + challenge($filename).map( *.join(',').say ); +} + +multi sub MAIN( 'challenge' ) { + MAIN('names.txt'); +} + +multi sub MAIN( 'test' ) is hidden-from-USAGE { + use Test; + + is challenge('names.txt'), (,,); + + done-testing; +} diff --git a/challenge-110/mimosinnet/raku/names.txt b/challenge-110/mimosinnet/raku/names.txt new file mode 100644 index 0000000000..716ebdce75 --- /dev/null +++ b/challenge-110/mimosinnet/raku/names.txt @@ -0,0 +1,5 @@ +name,age,sex +Mohammad,45,m +Joe,20,m +Julie,35,f +Cristina,10,f diff --git a/challenge-110/mimosinnet/raku/phone_numbers.txt b/challenge-110/mimosinnet/raku/phone_numbers.txt new file mode 100644 index 0000000000..48d6254741 --- /dev/null +++ b/challenge-110/mimosinnet/raku/phone_numbers.txt @@ -0,0 +1,5 @@ +0044 1148820341 + +44 1148820341 + 44-11-4882-0341 +(44) 1148820341 + 00 1148820341 -- cgit