aboutsummaryrefslogtreecommitdiff
path: root/challenge-110
diff options
context:
space:
mode:
authormimosinnet <mimosinnet@gmail.com>2021-05-01 20:56:51 +0200
committermimosinnet <mimosinnet@gmail.com>2021-05-01 20:56:51 +0200
commit29ddc311efebb220f0786678fcec9b6a47ccbb7a (patch)
tree85cf1c4e9d0950983ac7dbcb212f31570a282809 /challenge-110
parent5a54a93c68966fcf89aba39ae48d25e6d333e36f (diff)
downloadperlweeklychallenge-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.raku26
-rw-r--r--challenge-110/mimosinnet/raku/ch-2.raku22
-rw-r--r--challenge-110/mimosinnet/raku/names.txt5
-rw-r--r--challenge-110/mimosinnet/raku/phone_numbers.txt5
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