diff options
| author | mimosinnet <mimosinnet@gmail.com> | 2021-05-01 20:56:51 +0200 |
|---|---|---|
| committer | mimosinnet <mimosinnet@gmail.com> | 2021-05-01 20:56:51 +0200 |
| commit | 29ddc311efebb220f0786678fcec9b6a47ccbb7a (patch) | |
| tree | 85cf1c4e9d0950983ac7dbcb212f31570a282809 /challenge-110 | |
| parent | 5a54a93c68966fcf89aba39ae48d25e6d333e36f (diff) | |
| download | perlweeklychallenge-club-29ddc311efebb220f0786678fcec9b6a47ccbb7a.tar.gz perlweeklychallenge-club-29ddc311efebb220f0786678fcec9b6a47ccbb7a.tar.bz2 perlweeklychallenge-club-29ddc311efebb220f0786678fcec9b6a47ccbb7a.zip | |
Solutions for challenge 110
Diffstat (limited to 'challenge-110')
| -rw-r--r-- | challenge-110/mimosinnet/raku/ch-1.raku | 26 | ||||
| -rw-r--r-- | challenge-110/mimosinnet/raku/ch-2.raku | 22 | ||||
| -rw-r--r-- | challenge-110/mimosinnet/raku/names.txt | 5 | ||||
| -rw-r--r-- | challenge-110/mimosinnet/raku/phone_numbers.txt | 5 |
4 files changed, 58 insertions, 0 deletions
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* <prefix> \s <number> } + 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'), (<name Mohammad Joe Julie Cristina>,<age 45 20 35 10>,<sex m m f f>); + + 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 |
