diff options
| author | Roger Bell_West <roger@firedrake.org> | 2021-05-05 09:05:19 +0100 |
|---|---|---|
| committer | Roger Bell_West <roger@firedrake.org> | 2021-05-05 09:05:19 +0100 |
| commit | 87b5ebe9e07771cbb70cc569305e5b360afeedc0 (patch) | |
| tree | 59a3bde53ee1def36c71c3598ff700bee5cc1017 /challenge-110 | |
| parent | c09c5e0af6d4d188a8877f153db6174398031f5f (diff) | |
| parent | 5e66b581b9649e5bf461bc28bd391d25589e9258 (diff) | |
| download | perlweeklychallenge-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.java | 2 | ||||
| -rwxr-xr-x | challenge-110/e-choroba/perl/ch-1.pl | 29 | ||||
| -rwxr-xr-x | challenge-110/e-choroba/perl/ch-2.pl | 39 | ||||
| -rwxr-xr-x | challenge-110/feng-chang/raku/ch-1.raku | 16 | ||||
| -rwxr-xr-x | challenge-110/feng-chang/raku/ch-2.raku | 8 | ||||
| -rw-r--r-- | challenge-110/feng-chang/raku/ch-2.txt | 5 | ||||
| -rw-r--r-- | challenge-110/ryan-thompson/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-110/ryan-thompson/blog1.txt | 1 |
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/ |
