aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-110/roger-bell-west/README2
-rw-r--r--challenge-110/roger-bell-west/input.ch1.txt5
-rw-r--r--challenge-110/roger-bell-west/input.ch2.txt5
-rw-r--r--challenge-110/roger-bell-west/output.ch1.txt3
-rw-r--r--challenge-110/roger-bell-west/output.ch2.txt3
-rwxr-xr-xchallenge-110/roger-bell-west/perl/ch-1.pl8
-rwxr-xr-xchallenge-110/roger-bell-west/perl/ch-2.pl28
-rwxr-xr-xchallenge-110/roger-bell-west/python/ch-1.py10
-rwxr-xr-xchallenge-110/roger-bell-west/python/ch-2.py16
-rwxr-xr-xchallenge-110/roger-bell-west/raku/ch-1.p65
-rwxr-xr-xchallenge-110/roger-bell-west/raku/ch-2.p616
-rwxr-xr-xchallenge-110/roger-bell-west/ruby/ch-1.rb9
-rwxr-xr-xchallenge-110/roger-bell-west/ruby/ch-2.rb19
-rw-r--r--challenge-110/roger-bell-west/rust/ch-1.rs14
-rwxr-xr-xchallenge-110/roger-bell-west/rust/ch-2.rs23
-rwxr-xr-xchallenge-110/roger-bell-west/shell/ch-1.sh3
-rwxr-xr-xchallenge-110/roger-bell-west/test-harness.pl35
17 files changed, 203 insertions, 1 deletions
diff --git a/challenge-110/roger-bell-west/README b/challenge-110/roger-bell-west/README
index 245784dce5..f87212ec1a 100644
--- a/challenge-110/roger-bell-west/README
+++ b/challenge-110/roger-bell-west/README
@@ -1 +1 @@
-Solutions by Roger Bell West.
+Solutions by Roger Bell_West.
diff --git a/challenge-110/roger-bell-west/input.ch1.txt b/challenge-110/roger-bell-west/input.ch1.txt
new file mode 100644
index 0000000000..48d6254741
--- /dev/null
+++ b/challenge-110/roger-bell-west/input.ch1.txt
@@ -0,0 +1,5 @@
+0044 1148820341
+ +44 1148820341
+ 44-11-4882-0341
+(44) 1148820341
+ 00 1148820341
diff --git a/challenge-110/roger-bell-west/input.ch2.txt b/challenge-110/roger-bell-west/input.ch2.txt
new file mode 100644
index 0000000000..716ebdce75
--- /dev/null
+++ b/challenge-110/roger-bell-west/input.ch2.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/roger-bell-west/output.ch1.txt b/challenge-110/roger-bell-west/output.ch1.txt
new file mode 100644
index 0000000000..c681c2e535
--- /dev/null
+++ b/challenge-110/roger-bell-west/output.ch1.txt
@@ -0,0 +1,3 @@
+0044 1148820341
+ +44 1148820341
+(44) 1148820341
diff --git a/challenge-110/roger-bell-west/output.ch2.txt b/challenge-110/roger-bell-west/output.ch2.txt
new file mode 100644
index 0000000000..0cb1eb87a1
--- /dev/null
+++ b/challenge-110/roger-bell-west/output.ch2.txt
@@ -0,0 +1,3 @@
+name,Mohammad,Joe,Julie,Cristina
+age,45,20,35,10
+sex,m,m,f,f
diff --git a/challenge-110/roger-bell-west/perl/ch-1.pl b/challenge-110/roger-bell-west/perl/ch-1.pl
new file mode 100755
index 0000000000..e2aa6e30a5
--- /dev/null
+++ b/challenge-110/roger-bell-west/perl/ch-1.pl
@@ -0,0 +1,8 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+while (<>) {
+ print if /^\s*(\+[0-9]{2}|\([0-9]{2}\)|[0-9]{4}) [0-9]{10}\s*$/;
+}
diff --git a/challenge-110/roger-bell-west/perl/ch-2.pl b/challenge-110/roger-bell-west/perl/ch-2.pl
new file mode 100755
index 0000000000..071497ff09
--- /dev/null
+++ b/challenge-110/roger-bell-west/perl/ch-2.pl
@@ -0,0 +1,28 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use Text::CSV_XS;
+
+my $csv = Text::CSV_XS->new({eol => $/});
+
+my $fh;
+if (defined $ARGV[0] && -e $ARGV[0]) {
+ open $fh,'<',$ARGV[0];
+} else {
+ $fh=*STDIN;
+}
+
+my @a;
+my $ri=0;
+while (my $row=$csv->getline($fh)) {
+ foreach my $ci (0..$#{$row}) {
+ $a[$ci][$ri]=$row->[$ci];
+ }
+ $ri++;
+}
+
+close $fh;
+
+$csv->say(*STDOUT,$_) for @a;
diff --git a/challenge-110/roger-bell-west/python/ch-1.py b/challenge-110/roger-bell-west/python/ch-1.py
new file mode 100755
index 0000000000..ff7e397315
--- /dev/null
+++ b/challenge-110/roger-bell-west/python/ch-1.py
@@ -0,0 +1,10 @@
+#! /usr/bin/python3
+
+import fileinput
+import re
+
+pn=re.compile("^ *(\+[0-9]{2}|\([0-9]{2}\)|[0-9]{4}) [0-9]{10} *$")
+for line in fileinput.input():
+ line=line.rstrip()
+ if re.match(pn,line):
+ print(line)
diff --git a/challenge-110/roger-bell-west/python/ch-2.py b/challenge-110/roger-bell-west/python/ch-2.py
new file mode 100755
index 0000000000..5ee699e520
--- /dev/null
+++ b/challenge-110/roger-bell-west/python/ch-2.py
@@ -0,0 +1,16 @@
+#! /usr/bin/python
+
+import fileinput
+
+a=[]
+
+for line in fileinput.input():
+ line=line.rstrip()
+ r=line.split(',')
+ for ci in range(len(r)):
+ while len(a) < ci+1:
+ a.append([])
+ a[ci].append(r[ci])
+
+for r in a:
+ print (','.join(r))
diff --git a/challenge-110/roger-bell-west/raku/ch-1.p6 b/challenge-110/roger-bell-west/raku/ch-1.p6
new file mode 100755
index 0000000000..660a42b1cc
--- /dev/null
+++ b/challenge-110/roger-bell-west/raku/ch-1.p6
@@ -0,0 +1,5 @@
+#! /usr/bin/perl6
+
+for lines() {
+ say $_ if /^\s*(\+<[0..9]> ** 2|\(<[0..9]> ** 2\)|<[0..9]> ** 4)\s<[0..9]> ** 10\s*$/;
+}
diff --git a/challenge-110/roger-bell-west/raku/ch-2.p6 b/challenge-110/roger-bell-west/raku/ch-2.p6
new file mode 100755
index 0000000000..609bb0c507
--- /dev/null
+++ b/challenge-110/roger-bell-west/raku/ch-2.p6
@@ -0,0 +1,16 @@
+#! /usr/bin/perl6
+
+my @a;
+my $ri=0;
+
+for lines() {
+ my @r=split ',',$_;
+ for 0..@r.elems-1 -> $ci {
+ @a[$ci][$ri]=@r[$ci];
+ }
+ $ri++;
+}
+
+for @a -> @r {
+ say join(',',@r);
+} \ No newline at end of file
diff --git a/challenge-110/roger-bell-west/ruby/ch-1.rb b/challenge-110/roger-bell-west/ruby/ch-1.rb
new file mode 100755
index 0000000000..20b375cfcb
--- /dev/null
+++ b/challenge-110/roger-bell-west/ruby/ch-1.rb
@@ -0,0 +1,9 @@
+#! /usr/bin/ruby
+
+pn=Regexp.new('^ *(\+[0-9]{2}|\([0-9]{2}\)|[0-9]{4}) [0-9]{10} *$')
+
+while line=gets
+ if line =~ pn then
+ print line
+ end
+end
diff --git a/challenge-110/roger-bell-west/ruby/ch-2.rb b/challenge-110/roger-bell-west/ruby/ch-2.rb
new file mode 100755
index 0000000000..8daaacc6ff
--- /dev/null
+++ b/challenge-110/roger-bell-west/ruby/ch-2.rb
@@ -0,0 +1,19 @@
+#! /usr/bin/ruby
+
+a=[]
+
+while line=gets
+ line=line.chomp
+ r=line.split(',')
+ for ci in 0.upto(r.length-1)
+ while a.length < ci+1
+ a.push([])
+ end
+ a[ci].push(r[ci])
+ end
+end
+
+for r in a
+ print r.join(',')
+ print "\n"
+end
diff --git a/challenge-110/roger-bell-west/rust/ch-1.rs b/challenge-110/roger-bell-west/rust/ch-1.rs
new file mode 100644
index 0000000000..9718da2298
--- /dev/null
+++ b/challenge-110/roger-bell-west/rust/ch-1.rs
@@ -0,0 +1,14 @@
+use std::io;
+use std::io::prelude::*;
+use regex::Regex;
+
+fn main() {
+ let vp=Regex::new(r"^ *(\+[0-9]{2}|\([0-9]{2}\)|[0-9]{4}) [0-9]{10} *$").unwrap();
+ let stdin = io::stdin();
+ for line in stdin.lock().lines() {
+ let ll=line.unwrap();
+ if vp.is_match(&ll) {
+ println!("{}",ll);
+ }
+ }
+}
diff --git a/challenge-110/roger-bell-west/rust/ch-2.rs b/challenge-110/roger-bell-west/rust/ch-2.rs
new file mode 100755
index 0000000000..0510ccc1f2
--- /dev/null
+++ b/challenge-110/roger-bell-west/rust/ch-2.rs
@@ -0,0 +1,23 @@
+#! /bin/sh
+//usr/bin/env rustc $0 -o ${0}x && ./${0}x; rm -f ${0}x ; exit
+
+use std::io;
+use std::io::prelude::*;
+
+fn main() {
+ let stdin = io::stdin();
+ let mut a: Vec<Vec<String>>=vec![];
+ for line in stdin.lock().lines() {
+ let ll=line.unwrap();
+ let r: Vec<&str>=ll.split(",").collect();
+ for ci in 0..r.len() {
+ while a.len() < ci+1 {
+ a.push(vec![]);
+ }
+ a[ci].push(r[ci].to_string());
+ }
+ }
+ for r in a {
+ println!("{}",r.join(","));
+ }
+}
diff --git a/challenge-110/roger-bell-west/shell/ch-1.sh b/challenge-110/roger-bell-west/shell/ch-1.sh
new file mode 100755
index 0000000000..f061457bdc
--- /dev/null
+++ b/challenge-110/roger-bell-west/shell/ch-1.sh
@@ -0,0 +1,3 @@
+#! /bin/bash
+
+egrep "^ *(\+[0-9]{2}|\([0-9]{2}\)|[0-9]{4}) [0-9]{10} *$"
diff --git a/challenge-110/roger-bell-west/test-harness.pl b/challenge-110/roger-bell-west/test-harness.pl
new file mode 100755
index 0000000000..d8afeda46c
--- /dev/null
+++ b/challenge-110/roger-bell-west/test-harness.pl
@@ -0,0 +1,35 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+foreach my $program (@ARGV) {
+ my $n=1;
+ if ($program =~ /ch-2/) {
+ $n=2;
+ }
+ my $r=system("$program <input.ch$n.txt >test.ch$n.txt");
+ if ($r != 0) {
+ warn "$program failed\n";
+ next;
+ }
+ my @l;
+ foreach my $file ("output.ch$n.txt","test.ch$n.txt") {
+ push @l,[];
+ open I,'<',$file;
+ while (<I>) {
+ push @{$l[-1]},$_;
+ }
+ }
+ my $ok=1;
+ foreach my $ln(0..$#{$l[0]}) {
+ if (!defined $l[1][$ln] || $l[1][$ln] ne $l[0][$ln]) {
+ warn "$program failed to match at line $ln:\n$l[0][$ln]\n$l[1][$ln]\n";
+ $ok=0;
+ }
+ }
+ if ($ok) {
+ warn "$program OK\n";
+ }
+ unlink("test.ch$n.txt");
+}