aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-110/polettix/blog.txt1
-rw-r--r--challenge-110/polettix/blog1.txt1
-rw-r--r--challenge-110/polettix/perl/ch-1.pl42
-rw-r--r--challenge-110/polettix/perl/ch-2.pl33
4 files changed, 77 insertions, 0 deletions
diff --git a/challenge-110/polettix/blog.txt b/challenge-110/polettix/blog.txt
new file mode 100644
index 0000000000..4af1620081
--- /dev/null
+++ b/challenge-110/polettix/blog.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2021/04/28/pwc110-valid-phone-numbers/
diff --git a/challenge-110/polettix/blog1.txt b/challenge-110/polettix/blog1.txt
new file mode 100644
index 0000000000..087d74fa0f
--- /dev/null
+++ b/challenge-110/polettix/blog1.txt
@@ -0,0 +1 @@
+https://github.polettix.it/ETOOBUSY/2021/04/29/pwc110-transpose-file/
diff --git a/challenge-110/polettix/perl/ch-1.pl b/challenge-110/polettix/perl/ch-1.pl
new file mode 100644
index 0000000000..56e9843c48
--- /dev/null
+++ b/challenge-110/polettix/perl/ch-1.pl
@@ -0,0 +1,42 @@
+#!/usr/bin/env perl
+use 5.024;
+use warnings;
+use experimental qw< postderef signatures >;
+no warnings qw< experimental::postderef experimental::signatures >;
+
+sub is_phone_number_acceptable ($n) {
+ scalar(
+ $n =~ m{
+ \A
+ (?:
+ \+\d\d # +nn
+ | \(\d\d\) # (nn)
+ | \d{4} # nnnn
+ )
+ \s+
+ \d{10} # nnnnnnnnnn
+ \z
+ }mxs
+ );
+}
+
+sub valid_phone_numbers ($f) {
+ $f = ref($f) ? $f
+ : ($f eq '-') ? \*STDIN
+ : do { open my $h, '<', $f or die "$!\n"; $h };
+ is_phone_number_acceptable(s{\A\s+|\s+\z}{}rgmxs) && print while <$f>;
+}
+
+my $f = shift // do {
+ my $input = <<'END';
+0044 1148820341
+ +44 1148820341
+ 44-11-4882-0341
+(44) 1148820341
+ 00 1148820341
+END
+ open my $fh, '<', \$input;
+ $fh;
+};
+
+valid_phone_numbers($f);
diff --git a/challenge-110/polettix/perl/ch-2.pl b/challenge-110/polettix/perl/ch-2.pl
new file mode 100644
index 0000000000..081dd7cada
--- /dev/null
+++ b/challenge-110/polettix/perl/ch-2.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/env perl
+use 5.024;
+use warnings;
+use experimental qw< postderef signatures >;
+no warnings qw< experimental::postderef experimental::signatures >;
+
+sub transpose_file ($f) {
+ $f = ref($f) ? $f
+ : ($f eq '-') ? \*STDIN
+ : do { open my $h, '<', $f or die "$!\n"; $h };
+ my @lines = map { chomp; [ split m{,}mxs ] } <$f>;
+ while ('necessary') {
+ my $g = 0;
+ my @t = map { $g = 1 if $_->@*; shift($_->@*) || '' } @lines;
+ last unless $g;
+ say join ',', @t;
+ }
+ return;
+}
+
+my $f = shift // do {
+ my $input = <<'END';
+name,age,sex
+Mohammad,45,m
+Joe,20,m
+Julie,35,f
+Cristina,10,f
+END
+ open my $fh, '<', \$input;
+ $fh;
+};
+
+transpose_file($f);