diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-05-01 20:58:12 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-05-01 20:58:12 +0100 |
| commit | 98b600782520071bf6c8c7ff605104d68ece4a6b (patch) | |
| tree | deee7d37fba292b3f8c40cff11aa6244bf9a5d84 | |
| parent | 7c280e1fa297f9483329642defc6b7b0202f911a (diff) | |
| download | perlweeklychallenge-club-98b600782520071bf6c8c7ff605104d68ece4a6b.tar.gz perlweeklychallenge-club-98b600782520071bf6c8c7ff605104d68ece4a6b.tar.bz2 perlweeklychallenge-club-98b600782520071bf6c8c7ff605104d68ece4a6b.zip | |
- Added solutions by Laurent Rosenfeld.
24 files changed, 1152 insertions, 1009 deletions
diff --git a/challenge-110/laurent-rosenfeld/awk/ch-1.awk b/challenge-110/laurent-rosenfeld/awk/ch-1.awk new file mode 100644 index 0000000000..15bd4e4e6b --- /dev/null +++ b/challenge-110/laurent-rosenfeld/awk/ch-1.awk @@ -0,0 +1,7 @@ +echo ' +0044 1148820341 ++44 1148820342 +44-11-4882-0343 +(44) 1148820344 +00 1148820346 +' | awk '/([0-9]{4}|\+[0-9]{2}|\([0-9]{2}\))\s+[0-9]{10}/ { print $0 }' diff --git a/challenge-110/laurent-rosenfeld/awk/ch-2.awk b/challenge-110/laurent-rosenfeld/awk/ch-2.awk new file mode 100644 index 0000000000..6c848c89bf --- /dev/null +++ b/challenge-110/laurent-rosenfeld/awk/ch-2.awk @@ -0,0 +1,13 @@ +BEGIN{ + FS = "," +} +{ table[0,NR] = $1 } +{ table[1,NR] = $2 } +{ table[2,NR] = $3 } +{ max = NR } +END { + for (i = 0; i < 3; i++) { + for (j = 1; j < max - 1; j++) printf "%s,", table[i,j] + printf "%s\n", table[i,max-1] + } +} diff --git a/challenge-110/laurent-rosenfeld/blog.txt b/challenge-110/laurent-rosenfeld/blog.txt new file mode 100644 index 0000000000..ba0835c8a6 --- /dev/null +++ b/challenge-110/laurent-rosenfeld/blog.txt @@ -0,0 +1 @@ +http://blogs.perl.org/users/laurent_r/2021/05/perl-weekly-challenge-110-valid-phone-numbers-and-transposed-file.html diff --git a/challenge-110/laurent-rosenfeld/julia/ch-1.julia b/challenge-110/laurent-rosenfeld/julia/ch-1.julia new file mode 100644 index 0000000000..3f79251724 --- /dev/null +++ b/challenge-110/laurent-rosenfeld/julia/ch-1.julia @@ -0,0 +1,10 @@ +tests = ["foo 0044 1148820341 42", "xyz +44 1148820342 abc", + "44-11-4882-0343", " (44) 1148820344 ", "00 1148820345"] +pattern = r"(\d{4}|\+\d\d|\(\d\d\))\s+\d{10}" + +for str in tests + m = match(pattern, str) + if (! (m === nothing)) + println(m.match) + end +end diff --git a/challenge-110/laurent-rosenfeld/perl/ch-1.pl b/challenge-110/laurent-rosenfeld/perl/ch-1.pl new file mode 100644 index 0000000000..6d5189fc88 --- /dev/null +++ b/challenge-110/laurent-rosenfeld/perl/ch-1.pl @@ -0,0 +1,11 @@ +use strict; +use warnings; +use feature "say"; + +# simulate a text file with an array of strings +my @tests = (" 0044 1148820341 42 ", " +44 1148820342 abc", + " 44-11-4882-0343 ", " (44) 1148820344 foo (39) 1148820345", " 00 1148820346"); + +for my $str (@tests) { + say $1 while $str =~ / ( (?: \d {4} | \+ \d\d | \( \d\d \) ) \s+ \d{10} ) /gx; +} diff --git a/challenge-110/laurent-rosenfeld/perl/ch-2.pl b/challenge-110/laurent-rosenfeld/perl/ch-2.pl new file mode 100644 index 0000000000..e99e552add --- /dev/null +++ b/challenge-110/laurent-rosenfeld/perl/ch-2.pl @@ -0,0 +1,19 @@ +use strict; +use warnings; +use feature "say"; + +# Note: input array simulated with a string +my $in_string = "name,age,sex Mohammad,45,m + Joe,20,m Julie,35,f Cristina,10,f"; +my @input = split /\s+/, $in_string; +my @transposed; +for my $in (@input) { + my $i = 0; + for my $str (split /,/, $in) { + push @{$transposed[$i]}, $str; + $i++; + } +} +for my $line (@transposed) { + say join ',', @$line; +} diff --git a/challenge-110/laurent-rosenfeld/python/ch-1.py b/challenge-110/laurent-rosenfeld/python/ch-1.py new file mode 100644 index 0000000000..a46cbbbcfd --- /dev/null +++ b/challenge-110/laurent-rosenfeld/python/ch-1.py @@ -0,0 +1,8 @@ +import re + +tests = ("foo 0044 1148820341 42", "xyz +44 1148820342 abc", "44-11-4882-0343", " (44) 1148820344 ", "00 1148820345") + +for str in tests: + match = re.search("(\d{4}|\+\d\d|\(\d\d\))\s+\d{10}", str) + if (match): + print (match.group()) diff --git a/challenge-110/laurent-rosenfeld/raku/ch-1.raku b/challenge-110/laurent-rosenfeld/raku/ch-1.raku new file mode 100644 index 0000000000..d947e7a961 --- /dev/null +++ b/challenge-110/laurent-rosenfeld/raku/ch-1.raku @@ -0,0 +1,9 @@ +use v6; + +my @tests = " 0044 1148820341 42 ", " +44 1148820342 abc", + " 44-11-4882-0343 ", " (44) 1148820344 ", " 00 1148820345"; + +my $ten-dgts = rx/\d ** 10/; +for @tests -> $str { + say ~$0 if $str ~~ / ( [ \d ** 4 || '+' \d\d || \( \d\d \) ] \s+ <$ten-dgts> ) /; +} diff --git a/challenge-110/laurent-rosenfeld/raku/ch-2.raku b/challenge-110/laurent-rosenfeld/raku/ch-2.raku new file mode 100644 index 0000000000..87b0f55ea8 --- /dev/null +++ b/challenge-110/laurent-rosenfeld/raku/ch-2.raku @@ -0,0 +1,16 @@ +use v6; + +my @input = <name,age,sex Mohammad,45,m + Joe,20,m Julie,35,f Cristina,10,f>; + +my @transposed; +for @input -> $in { + my $i = 0; + for $in.split(',') -> $str { + push @transposed[$i], $str; + $i++; + } +} +for @transposed -> @line { + say @line.join(','); +} diff --git a/challenge-110/laurent-rosenfeld/ruby/ch-1.rb b/challenge-110/laurent-rosenfeld/ruby/ch-1.rb new file mode 100644 index 0000000000..2f139afdde --- /dev/null +++ b/challenge-110/laurent-rosenfeld/ruby/ch-1.rb @@ -0,0 +1,9 @@ +tests = ["foo 0044 1148820341 42", "xyz +44 1148820342 abc", + "44-11-4882-0343", " (44) 1148820344 ", "00 1148820345"] +pattern = %r{((\d{4}|\+\d{2}|\(\d{2}\))\s+\d{10})} +for str in tests + match = str.match(pattern) + if match then + print(match[0], "\n") + end +end diff --git a/challenge-110/laurent-rosenfeld/scala/ch-1.scala b/challenge-110/laurent-rosenfeld/scala/ch-1.scala new file mode 100644 index 0000000000..6a23b5ab85 --- /dev/null +++ b/challenge-110/laurent-rosenfeld/scala/ch-1.scala @@ -0,0 +1,17 @@ +import scala.util.matching.Regex + +object phoneNumber extends App { + val pattern = "((?:\\d{4}|\\+\\d\\d|\\(\\d\\d\\))\\s+\\d{10})".r + val tests = Array( + " 0044 1148820341 42 ", + " +44 1148820342 abc", + " 44-11-4882-0343 ", + " (44) 1148820344 (33) 1148820345", + " 00 1148820346" + ); + for (str <- tests) { + if (pattern.unanchored.matches(str)) { + println((pattern findAllIn str).mkString(", ")) + } + } +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 0b5e7af89f..b1aa0e0ab6 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -2,130 +2,22 @@ "chart" : { "type" : "column" }, - "series" : [ - { - "name" : "Perl Weekly Challenge - 110", - "data" : [ - { - "drilldown" : "Abigail", - "y" : 2, - "name" : "Abigail" - }, - { - "drilldown" : "Andinus", - "name" : "Andinus", - "y" : 4 - }, - { - "y" : 3, - "name" : "Dave Jacoby", - "drilldown" : "Dave Jacoby" - }, - { - "name" : "Flavio Poletti", - "y" : 4, - "drilldown" : "Flavio Poletti" - }, - { - "drilldown" : "James Smith", - "y" : 3, - "name" : "James Smith" - }, - { - "y" : 2, - "name" : "Jan Krnavek", - "drilldown" : "Jan Krnavek" - }, - { - "y" : 2, - "name" : "Joan Mimosinnet", - "drilldown" : "Joan Mimosinnet" - }, - { - "drilldown" : "Jorg Sommrey", - "name" : "Jorg Sommrey", - "y" : 2 - }, - { - "drilldown" : "Luca Ferrari", - "y" : 4, - "name" : "Luca Ferrari" - }, - { - "drilldown" : "Mark Anderson", - "y" : 2, - "name" : "Mark Anderson" - }, - { - "y" : 4, - "name" : "Mohammad S Anwar", - "drilldown" : "Mohammad S Anwar" - }, - { - "drilldown" : "Niels van Dijke", - "name" : "Niels van Dijke", - "y" : 2 - }, - { - "y" : 5, - "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West" - }, - { - "drilldown" : "Ryan Thompson", - "y" : 4, - "name" : "Ryan Thompson" - }, - { - "drilldown" : "Simon Green", - "name" : "Simon Green", - "y" : 3 - }, - { - "name" : "Stuart Little", - "y" : 4, - "drilldown" : "Stuart Little" - }, - { - "drilldown" : "Ulrich Rieke", - "y" : 4, - "name" : "Ulrich Rieke" - }, - { - "drilldown" : "W. Luis Mochan", - "y" : 3, - "name" : "W. Luis Mochan" - } - ], - "colorByPoint" : 1 - } - ], - "subtitle" : { - "text" : "[Champions: 18] Last updated at 2021-05-01 19:46:15 GMT" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } + "title" : { + "text" : "Perl Weekly Challenge - 110" }, "drilldown" : { "series" : [ { + "id" : "Abigail", "name" : "Abigail", "data" : [ [ "Perl", 2 ] - ], - "id" : "Abigail" + ] }, { - "id" : "Andinus", "data" : [ [ "Raku", @@ -136,11 +28,12 @@ 2 ] ], - "name" : "Andinus" + "name" : "Andinus", + "id" : "Andinus" }, { - "id" : "Dave Jacoby", "name" : "Dave Jacoby", + "id" : "Dave Jacoby", "data" : [ [ "Perl", @@ -163,8 +56,8 @@ 2 ] ], - "name" : "Flavio Poletti", - "id" : "Flavio Poletti" + "id" : "Flavio Poletti", + "name" : "Flavio Poletti" }, { "data" : [ @@ -181,8 +74,8 @@ "id" : "James Smith" }, { - "id" : "Jan Krnavek", "name" : "Jan Krnavek", + "id" : "Jan Krnavek", "data" : [ [ "Raku", @@ -191,8 +84,8 @@ ] }, { - "id" : "Joan Mimosinnet", "name" : "Joan Mimosinnet", + "id" : "Joan Mimosinnet", "data" : [ [ "Raku", @@ -202,37 +95,55 @@ }, { "id" : "Jorg Sommrey", + "name" : "Jorg Sommrey", "data" : [ [ "Perl", 2 ] - ], - "name" : "Jorg Sommrey" + ] }, { + "id" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", "data" : [ [ + "Perl", + 2 + ], + [ "Raku", 2 ], [ "Blog", - 2 + 1 ] - ], - "name" : "Luca Ferrari", - "id" : "Luca Ferrari" + ] }, { + "name" : "Luca Ferrari", + "id" : "Luca Ferrari", "data" : [ [ "Raku", 2 + ], + [ + "Blog", + 2 ] - ], + ] + }, + { "name" : "Mark Anderson", - "id" : "Mark Anderson" + "id" : "Mark Anderson", + "data" : [ + [ + "Raku", + 2 + ] + ] }, { "data" : [ @@ -245,8 +156,8 @@ 2 ] ], - "name" : "Mohammad S Anwar", - "id" : "Mohammad S Anwar" + "id" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar" }, { "id" : "Niels van Dijke", @@ -259,7 +170,6 @@ ] }, { - "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -274,9 +184,11 @@ 1 ] ], + "id" : "Roger Bell_West", "name" : "Roger Bell_West" }, { + "name" : "Ryan Thompson", "id" : "Ryan Thompson", "data" : [ [ @@ -287,11 +199,9 @@ "Raku", 2 ] - ], - "name" : "Ryan Thompson" + ] }, { - "id" : "Simon Green", "data" : [ [ "Perl", @@ -302,10 +212,12 @@ 1 ] ], + "id" : "Simon Green", "name" : "Simon Green" }, { "id" : "Stuart Little", + "name" : "Stuart Little", "data" : [ [ "Perl", @@ -315,12 +227,9 @@ "Raku", 2 ] - ], - "name" : "Stuart Little" + ] }, { - "id" : "Ulrich Rieke", - "name" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -330,10 +239,13 @@ "Raku", 2 ] - ] + ], + "name" : "Ulrich Rieke", + "id" : "Ulrich Rieke" }, { "name" : "W. Luis Mochan", + "id" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -343,28 +255,139 @@ "Blog", 1 ] - ], - "id" : "W. Luis Mochan" + ] } ] }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "tooltip" : { - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", - "followPointer" : 1 + "subtitle" : { + "text" : "[Champions: 19] Last updated at 2021-05-01 19:57:50 GMT" }, "legend" : { "enabled" : 0 }, - "title" : { - "text" : "Perl Weekly Challenge - 110" - }, "xAxis" : { "type" : "category" + }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } + }, + "tooltip" : { + "followPointer" : 1, + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>" + }, + "series" : [ + { + "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 110", + "data" : [ + { + "y" : 2, + "name" : "Abigail", + "drilldown" : "Abigail" + }, + { + "name" : "Andinus", + "y" : 4, + "drilldown" : "Andinus" + }, + { + "drilldown" : "Dave Jacoby", + "name" : "Dave Jacoby", + "y" : 3 + }, + { + "drilldown" : "Flavio Poletti", + "y" : 4, + "name" : "Flavio Poletti" + }, + { + "drilldown" : "James Smith", + "name" : "James Smith", + "y" : 3 + }, + { + "y" : 2, + "name" : "Jan Krnavek", + "drilldown" : "Jan Krnavek" + }, + { + "name" : "Joan Mimosinnet", + "y" : 2, + "drilldown" : "Joan Mimosinnet" + }, + { + "drilldown" : "Jorg Sommrey", + "name" : "Jorg Sommrey", + "y" : 2 + }, + { + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", + "y" : 5 + }, + { + "name" : "Luca Ferrari", + "y" : 4, + "drilldown" : "Luca Ferrari" + }, + { + "name" : "Mark Anderson", + "y" : 2, + "drilldown" : "Mark Anderson" + }, + { + "drilldown" : "Mohammad S Anwar", + "y" : 4, + "name" : "Mohammad S Anwar" + }, + { + "name" : "Niels van Dijke", + "y" : 2, + "drilldown" : "Niels van Dijke" + }, + { + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West", + "y" : 5 + }, + { + "drilldown" : "Ryan Thompson", + "y" : 4, + "name" : "Ryan Thompson" + }, + { + "y" : 3, + "name" : "Simon Green", + "drilldown" : "Simon Green" + }, + { + "drilldown" : "Stuart Little", + "name" : "Stuart Little", + "y" : 4 + }, + { + "name" : "Ulrich Rieke", + "y" : 4, + "drilldown" : "Ulrich Rieke" + }, + { + "y" : 3, + "name" : "W. Luis Mochan", + "drilldown" : "W. Luis Mochan" + } + ] + } + ], + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 341e536985..e75d044d45 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,56 +1,44 @@ { - "chart" : { - "type" : "column" - }, "series" : [ { + "name" : "Contributions", "dataLabels" : { - "y" : 10, "style" : { "fontFamily" : "Verdana, sans-serif", "fontSize" : "13px" }, "align" : "right", - "format" : "{point.y:.0f}", "rotation" : -90, + "format" : "{point.y:.0f}", "color" : "#FFFFFF", + "y" : 10, "enabled" : "true" }, "data" : [ [ "Blog", - 1517 + 1518 ], [ "Perl", - 5184 + 5186 ], [ "Raku", - 3298 + 3300 ] - ], - "name" : "Contributions" + ] } ], - "subtitle" : { - "text" : "Last updated at 2021-05-01 19:46:15 GMT" - }, "yAxis" : { + "min" : 0, "title" : { "text" : null - }, - "min" : 0 + } }, "tooltip" : { "pointFormat" : "<b>{point.y:.0f}</b>" }, - "legend" : { - "enabled" : "false" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" - }, "xAxis" : { "labels" : { "style" : { @@ -59,5 +47,17 @@ } }, "type" : "category" + }, + "legend" : { + "enabled" : "false" + }, + "subtitle" : { + "text" : "Last updated at 2021-05-01 19:57:50 GMT" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + }, + "chart" : { + "type" : "column" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 7b4a6268c3..de9c404edb 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,26 +1,20 @@ { - "xAxis" : { - "type" : "category" - }, - "title" : { - "text" : "Perl Weekly Challenge Language" + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2021-05-01 19:57:50 GMT" }, "legend" : { "enabled" : "false" }, - "tooltip" : { - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>", - "followPointer" : "true" + "title" : { + "text" : "Perl Weekly Challenge Language" }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } + "chart" : { + "type" : "column" }, "drilldown" : { "series" : [ { + "id" : "001", "name" : "001", "data" : [ [ @@ -35,10 +29,11 @@ "Blog", 11 ] - ], - "id" : "001" + ] }, { + "id" : "002", + "name" : "002", "data" : [ [ "Perl", @@ -52,12 +47,11 @@ "Blog", 10 ] - ], - "name" : "002", - "id" : "002" + ] }, { "name" : "003", + "id" : "003", "data" : [ [ "Perl", @@ -71,11 +65,11 @@ "Blog", 9 ] - ], - "id" : "003" + ] }, { "id" : "004", + "name" : "004", "data" : [ [ "Perl", @@ -89,12 +83,9 @@ "Blog", 10 ] - ], - "name" : "004" + ] }, { - "id" : "005", - "name" : "005", "data" : [ [ "Perl", @@ -108,9 +99,13 @@ "Blog", 12 ] - ] + ], + "name" : "005", + "id" : "005" }, { + "id" : "006", + "name" : "006", "data" : [ [ "Perl", @@ -124,11 +119,11 @@ "Blog", 7 ] - ], - "name" : "006", - "id" : "006" + ] }, { + "name" : "007", + "id" : "007", "data" : [ [ "Perl", @@ -142,11 +137,10 @@ "Blog", 10 ] - ], - "name" : "007", - "id" : "007" + ] }, { + "name" : "008", "id" : "008", "data" : [ [ @@ -161,10 +155,11 @@ "Blog", 12 ] - ], - "name" : "008" + ] }, { + "name" : "009", + "id" : "009", "data" : [ [ "Perl", @@ -178,12 +173,11 @@ "Blog", 13 ] - ], - "name" : "009", - "id" : "009" + ] }, { "name" : "010", + "id" : "010", "data" : [ [ "Perl", @@ -197,11 +191,9 @@ "Blog", 11 ] - ], - "id" : "010" + ] }, { - "id" : "011", "data" : [ [ "Perl", @@ -216,7 +208,8 @@ 10 ] ], - "name" : "011" + "name" : "011", + "id" : "011" }, { "data" : [ @@ -233,10 +226,11 @@ 11 ] ], - "name" : "012", - "id" : "012" + "id" : "012", + "name" : "012" }, { + "name" : "013", "id" : "013", "data" : [ [ @@ -251,8 +245,7 @@ "Blog", |
