aboutsummaryrefslogtreecommitdiff
path: root/challenge-110
diff options
context:
space:
mode:
authorRoger Bell_West <roger@firedrake.org>2021-05-05 09:05:19 +0100
committerRoger Bell_West <roger@firedrake.org>2021-05-05 09:05:19 +0100
commit87b5ebe9e07771cbb70cc569305e5b360afeedc0 (patch)
tree59a3bde53ee1def36c71c3598ff700bee5cc1017 /challenge-110
parentc09c5e0af6d4d188a8877f153db6174398031f5f (diff)
parent5e66b581b9649e5bf461bc28bd391d25589e9258 (diff)
downloadperlweeklychallenge-club-87b5ebe9e07771cbb70cc569305e5b360afeedc0.tar.gz
perlweeklychallenge-club-87b5ebe9e07771cbb70cc569305e5b360afeedc0.tar.bz2
perlweeklychallenge-club-87b5ebe9e07771cbb70cc569305e5b360afeedc0.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-110')
-rw-r--r--challenge-110/cheok-yin-fung/java/TransposeFile.java2
-rwxr-xr-xchallenge-110/e-choroba/perl/ch-1.pl29
-rwxr-xr-xchallenge-110/e-choroba/perl/ch-2.pl39
-rwxr-xr-xchallenge-110/feng-chang/raku/ch-1.raku16
-rwxr-xr-xchallenge-110/feng-chang/raku/ch-2.raku8
-rw-r--r--challenge-110/feng-chang/raku/ch-2.txt5
-rw-r--r--challenge-110/ryan-thompson/blog.txt1
-rw-r--r--challenge-110/ryan-thompson/blog1.txt1
8 files changed, 100 insertions, 1 deletions
diff --git a/challenge-110/cheok-yin-fung/java/TransposeFile.java b/challenge-110/cheok-yin-fung/java/TransposeFile.java
index 438d070b47..cbb9182f22 100644
--- a/challenge-110/cheok-yin-fung/java/TransposeFile.java
+++ b/challenge-110/cheok-yin-fung/java/TransposeFile.java
@@ -53,7 +53,7 @@ public class TransposeFile
System.out.println(e.getMessage());
System.exit(0);
} catch (IndexOutOfBoundsException e) {
- System.out.println("Usage: java Transpose [CSV file]");
+ System.out.println("Usage: java TransposeFile [CSV file]");
System.exit(0);
} catch (Exception e) {
System.out.println("Error(s) in input file.");
diff --git a/challenge-110/e-choroba/perl/ch-1.pl b/challenge-110/e-choroba/perl/ch-1.pl
new file mode 100755
index 0000000000..6a36f86903
--- /dev/null
+++ b/challenge-110/e-choroba/perl/ch-1.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+
+my $VALID = qr/^\s* (?: \([0-9]{2}\)
+ | \+[0-9]{2}
+ | [0-9]{4}
+ ) \s+
+ [0-9]{10} $/x;
+
+sub valid_phone_numbers {
+ my @valid = grep /$VALID/, @_;
+ chomp @valid;
+ return \@valid
+}
+
+use Test::More tests => 1;
+
+is_deeply valid_phone_numbers(<DATA>),
+ ['0044 1148820341',
+ ' +44 1148820341',
+ '(44) 1148820341'];
+
+__DATA__
+0044 1148820341
+ +44 1148820341
+ 44-11-4882-0341
+(44) 1148820341
+ 00 1148820341
diff --git a/challenge-110/e-choroba/perl/ch-2.pl b/challenge-110/e-choroba/perl/ch-2.pl
new file mode 100755
index 0000000000..08bdf011aa
--- /dev/null
+++ b/challenge-110/e-choroba/perl/ch-2.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use feature qw{ say };
+
+sub transpose_file {
+ my ($input, $output) = @_;
+ open my $in, '<', $input or die $!;
+ open my $out, '>', $output or die $!;
+
+ my $maybe_comma = "";
+ my @tr;
+ while (<$in>) {
+ chomp;
+ my @cells = split /,/;
+ $tr[$_] .= "$maybe_comma$cells[$_]" for 0 .. $#cells;
+ $maybe_comma = ',';
+ }
+ say {$out} $_ for @tr;
+}
+
+use Test::More tests => 1;
+
+my $file = << '__INPUT__';
+name,age,sex
+Mohammad,45,m
+Joe,20,m
+Julie,35,f
+Cristina,10,f
+__INPUT__
+
+my $expected = << '__EXPECTED__';
+name,Mohammad,Joe,Julie,Cristina
+age,45,20,35,10
+sex,m,m,f,f
+__EXPECTED__
+
+transpose_file(\$file, \ my $outfile);
+is $outfile, $expected;
diff --git a/challenge-110/feng-chang/raku/ch-1.raku b/challenge-110/feng-chang/raku/ch-1.raku
new file mode 100755
index 0000000000..7e6f7bd5cc
--- /dev/null
+++ b/challenge-110/feng-chang/raku/ch-1.raku
@@ -0,0 +1,16 @@
+#!/bin/env raku
+
+grammar Phone-Number {
+ regex TOP { <prefix> \s+ <local> }
+ token prefix { '+'\d\d || '('\d\d')' || \d\d\d\d }
+ token local { \d ** 10 }
+}
+
+my @numbers =
+ '0044 1148820341',
+ '+44 1148820341',
+ '44-11-4882-0341',
+ '(44) 1148820341',
+ '00 1148820341';
+
+.put if Phone-Number.parse($_) for @numbers;
diff --git a/challenge-110/feng-chang/raku/ch-2.raku b/challenge-110/feng-chang/raku/ch-2.raku
new file mode 100755
index 0000000000..78a5c3dfb3
--- /dev/null
+++ b/challenge-110/feng-chang/raku/ch-2.raku
@@ -0,0 +1,8 @@
+#!/bin/env raku
+
+sub MAIN(Str:D $f where *.IO.e = 'ch-2.txt') {
+ my @a = $f.IO.linesĀ».split(',');
+ for ^@a[0].elems -> $i {
+ put @a.map(*[$i]).join(',');
+ }
+}
diff --git a/challenge-110/feng-chang/raku/ch-2.txt b/challenge-110/feng-chang/raku/ch-2.txt
new file mode 100644
index 0000000000..716ebdce75
--- /dev/null
+++ b/challenge-110/feng-chang/raku/ch-2.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/ryan-thompson/blog.txt b/challenge-110/ryan-thompson/blog.txt
new file mode 100644
index 0000000000..950fdc0813
--- /dev/null
+++ b/challenge-110/ryan-thompson/blog.txt
@@ -0,0 +1 @@
+https://ry.ca/2021/04/phone-number-validation/
diff --git a/challenge-110/ryan-thompson/blog1.txt b/challenge-110/ryan-thompson/blog1.txt
new file mode 100644
index 0000000000..c49659afff
--- /dev/null
+++ b/challenge-110/ryan-thompson/blog1.txt
@@ -0,0 +1 @@
+https://ry.ca/2021/04/transpose-csv-file/