diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-08-31 22:14:59 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-08-31 22:14:59 +0100 |
| commit | e200d09264f1c7218af9e22b007efd77da3e834e (patch) | |
| tree | fe7368065325a1ff060e14a5d222c5612f2d27bb | |
| parent | 8df6baba003c25211b0f97b2817826bd61e6f69d (diff) | |
| download | perlweeklychallenge-club-e200d09264f1c7218af9e22b007efd77da3e834e.tar.gz perlweeklychallenge-club-e200d09264f1c7218af9e22b007efd77da3e834e.tar.bz2 perlweeklychallenge-club-e200d09264f1c7218af9e22b007efd77da3e834e.zip | |
- Added solutions by Guillermo Ramos.
| -rw-r--r-- | challenge-023/guillermo-ramos/perl5/ch-1.pl | 30 | ||||
| -rw-r--r-- | challenge-023/guillermo-ramos/perl5/ch-2.pl | 33 | ||||
| -rw-r--r-- | challenge-023/guillermo-ramos/perl5/ch-3.pl | 52 | ||||
| -rw-r--r-- | stats/pwc-current.json | 195 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 44 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 346 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 536 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 26 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 96 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 88 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 272 |
12 files changed, 946 insertions, 816 deletions
diff --git a/challenge-023/guillermo-ramos/perl5/ch-1.pl b/challenge-023/guillermo-ramos/perl5/ch-1.pl new file mode 100644 index 0000000000..5c34400b72 --- /dev/null +++ b/challenge-023/guillermo-ramos/perl5/ch-1.pl @@ -0,0 +1,30 @@ +#!/usr/bin/env perl +# +# Create a script that prints nth order forward difference series. You should be +# a able to pass the list of numbers and order number as command line +# parameters. Let me show you with an example. +# +# Suppose we have list (X) of numbers: 5, 9, 2, 8, 1, 6 and we would like to +# create 1st order forward difference series (Y). So using the formula Y(i) = +# X(i+1) - X(i), we get the following numbers: (9-5), (2-9), (8-2), (1-8), +# (6-1). In short, the final series would be: 4, -7, 6, -7, 5. If you noticed, +# it has one less number than the original series. Similary you can carry on 2nd +# order forward difference series like: (-7-4), (6+7), (-7-6), (5+7) => -11, 13, +# -13, 12. +################################################################################ + +use strict; +use warnings; + +@ARGV == 2 or die "Usage: $0 <order> <x1,x2,...xn>"; +my $order = shift; +my @xs = split ',', shift; + +foreach (1 .. $order) { + foreach my $i (0 .. $#xs-1) { + $xs[$i] = $xs[$i+1] - $xs[$i]; + } + pop @xs; +} + +print "@xs\n"; diff --git a/challenge-023/guillermo-ramos/perl5/ch-2.pl b/challenge-023/guillermo-ramos/perl5/ch-2.pl new file mode 100644 index 0000000000..fb3c699997 --- /dev/null +++ b/challenge-023/guillermo-ramos/perl5/ch-2.pl @@ -0,0 +1,33 @@ +#!/usr/bin/env perl +# +# Create a script that prints Prime Decomposition of a given number. The prime +# decomposition of a number is defined as a list of prime numbers which when all +# multiplied together, are equal to that number. For example, the Prime +# decomposition of 228 is 2,2,3,19 as 228 = 2 * 2 * 3 * 19. +################################################################################ + +use strict; +use warnings; + +use List::Util qw<any>; + +my $n = my $number = shift or die "Usage: $0 <number>"; + +my @primes = (2); +my @factors; +while ($n != 1) { + my $lastp = $primes[-1]; + if ($n % $lastp == 0) { + push @factors, $lastp; + $n /= $lastp; + } else { + $lastp++ while any { $lastp % $_ == 0 } @primes; + push @primes, $lastp; + } +} + +print "$number = ", join("*", @factors), "\n"; + +# Quick test +$n *= $_ foreach (@factors); +$n == $number or die "Oops, something went wrong!"; diff --git a/challenge-023/guillermo-ramos/perl5/ch-3.pl b/challenge-023/guillermo-ramos/perl5/ch-3.pl new file mode 100644 index 0000000000..2dd84376b2 --- /dev/null +++ b/challenge-023/guillermo-ramos/perl5/ch-3.pl @@ -0,0 +1,52 @@ +#!/usr/bin/env perl +# +# Write a script to use Random Poems API. This is the easiset API, I have come +# across so far. You don’t need API key for this. They have only route to work +# with (GET). +# +# (https://www.poemist.com/api/v1/randompoems) +################################################################################ + +use strict; +use warnings; +use open ':std', ':encoding(UTF-8)'; +use autodie; + +use HTTP::Request; +use LWP::UserAgent; +use JSON qw<decode_json>; +use Time::HiRes qw<sleep>; + +my $ua = LWP::UserAgent->new(); +$ua->agent("gramos's script for perlweeklychallenge.org"); + +my $uri = 'https://www.poemist.com/api/v1/randompoems'; +my $resp = $ua->request(HTTP::Request->new('GET', $uri)); +my $content = decode_json($resp->content); +my $poem = $content->[0]; +my $poet = $poem->{'poet'}; + +$|++; +sub typewrite { + my $text = shift; + foreach my $i (0 .. length($text) - 1) { + my $char = substr($text, $i, 1); + print $char; + + my $sleep = + $char eq ',' ? 0.2 : + (grep { $_ eq $char } qw<- : ( )>) ? 0.3 : + $char eq ';' ? 0.4 : + $char eq '.' ? 0.5 : + (grep { $_ eq $char } qw<! ?>) ? 0.6 : + $char eq "\n" ? 0.7 : + 0.06; + sleep($sleep); + } +} + +typewrite sprintf "%s", $poem->{'title'}; +sleep(0.2); +typewrite sprintf "\nby %s\n\n", $poet->{'name'}; +printf "(%s)", $poem->{'url'}; +typewrite(sprintf "\n\n%s\n", $poem->{'content'}); diff --git a/stats/pwc-current.json b/stats/pwc-current.json index a2cfe44d20..f87beb127a 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,95 +1,109 @@ { "subtitle" : { - "text" : "[Champions: 17] Last updated at 2019-08-31 21:07:26 GMT" + "text" : "[Champions: 18] Last updated at 2019-08-31 21:14:35 GMT" }, - "legend" : { - "enabled" : 0 + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } }, - "title" : { - "text" : "Perl Weekly Challenge - 023" + "tooltip" : { + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", + "followPointer" : 1, + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>" }, "series" : [ { + "colorByPoint" : 1, "data" : [ { - "y" : 3, + "name" : "Andrezgz", "drilldown" : "Andrezgz", - "name" : "Andrezgz" + "y" : 3 }, { - "drilldown" : "Arne Sommer", "name" : "Arne Sommer", + "drilldown" : "Arne Sommer", "y" : 5 }, { + "name" : "Daniel Mantovani", "y" : 2, - "drilldown" : "Daniel Mantovani", - "name" : "Daniel Mantovani" + "drilldown" : "Daniel Mantovani" }, { "drilldown" : "Duane Powell", - "name" : "Duane Powell", - "y" : 2 + "y" : 2, + "name" : "Duane Powell" }, { - "y" : 3, "drilldown" : "E. Choroba", + "y" : 3, "name" : "E. Choroba" }, { + "y" : 3, + "drilldown" : "Guillermo Ramos", + "name" : "Guillermo Ramos" + }, + { + "y" : 2, "drilldown" : "Joelle Maslak", - "name" : "Joelle Maslak", - "y" : 2 + "name" : "Joelle Maslak" }, { "name" : "Kevin Colyer", - "drilldown" : "Kevin Colyer", - "y" : 2 + "y" : 2, + "drilldown" : "Kevin Colyer" }, { "y" : 5, - "name" : "Laurent Rosenfeld", - "drilldown" : "Laurent Rosenfeld" + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld" }, { "drilldown" : "Mark Anderson", - "name" : "Mark Anderson", - "y" : 3 + "y" : 3, + "name" : "Mark Anderson" }, { - "drilldown" : "Noud", "name" : "Noud", + "drilldown" : "Noud", "y" : 2 }, { "y" : 6, - "name" : "Randy Lauen", - "drilldown" : "Randy Lauen" + "drilldown" : "Randy Lauen", + "name" : "Randy Lauen" }, { - "drilldown" : "Roger Bell West", "name" : "Roger Bell West", + "drilldown" : "Roger Bell West", "y" : 5 }, { - "drilldown" : "Ruben Westerberg", "name" : "Ruben Westerberg", + "drilldown" : "Ruben Westerberg", "y" : 4 }, { "y" : 2, - "name" : "Simon Proctor", - "drilldown" : "Simon Proctor" + "drilldown" : "Simon Proctor", + "name" : "Simon Proctor" }, { - "name" : "Steven Wilson", + "y" : 1, "drilldown" : "Steven Wilson", - "y" : 1 + "name" : "Steven Wilson" }, { + "name" : "Walt Mankowski", "y" : 2, - "drilldown" : "Walt Mankowski", - "name" : "Walt Mankowski" + "drilldown" : "Walt Mankowski" }, { "y" : 7, @@ -97,20 +111,31 @@ "name" : "Yet Ebreo" } ], - "colorByPoint" : 1, "name" : "Perl Weekly Challenge - 023" } ], - "tooltip" : { - "followPointer" : 1, - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" + "title" : { + "text" : "Perl Weekly Challenge - 023" + }, + "legend" : { + "enabled" : 0 + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "chart" : { + "type" : "column" + }, + "xAxis" : { + "type" : "category" }, "drilldown" : { "series" : [ { - "id" : "Andrezgz", "name" : "Andrezgz", + "id" : "Andrezgz", "data" : [ [ "Perl 5", @@ -119,8 +144,8 @@ ] }, { - "name" : "Arne Sommer", "id" : "Arne Sommer", + "name" : "Arne Sommer", "data" : [ [ "Perl 5", @@ -137,18 +162,18 @@ ] }, { + "id" : "Daniel Mantovani", + "name" : "Daniel Mantovani", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Daniel Mantovani", - "name" : "Daniel Mantovani" + ] }, { - "id" : "Duane Powell", "name" : "Duane Powell", + "id" : "Duane Powell", "data" : [ [ "Perl 5", @@ -171,6 +196,18 @@ ] }, { + "name" : "Guillermo Ramos", + "id" : "Guillermo Ramos", + "data" : [ + [ + "Perl 5", + 3 + ] + ] + }, + { + "name" : "Joelle Maslak", + "id" : "Joelle Maslak", "data" : [ [ "Perl 5", @@ -180,21 +217,21 @@ "Perl 6", 1 ] - ], - "name" : "Joelle Maslak", - "id" : "Joelle Maslak" + ] }, { - "name" : "Kevin Colyer", - "id" : "Kevin Colyer", "data" : [ [ "Perl 6", 2 ] - ] + ], + "id" : "Kevin Colyer", + "name" : "Kevin Colyer" }, { + "id" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", "data" : [ [ "Perl 5", @@ -208,9 +245,7 @@ "Blog", 1 ] - ], - "name" : "Laurent Rosenfeld", - "id" : "Laurent Rosenfeld" + ] }, { "data" : [ @@ -219,22 +254,22 @@ 3 ] ], - "name" : "Mark Anderson", - "id" : "Mark Anderson" + "id" : "Mark Anderson", + "name" : "Mark Anderson" }, { - "name" : "Noud", - "id" : "Noud", "data" : [ [ "Perl 6", 2 ] - ] + ], + "id" : "Noud", + "name" : "Noud" }, { - "name" : "Randy Lauen", "id" : "Randy Lauen", + "name" : "Randy Lauen", "data" : [ [ "Perl 5", @@ -247,6 +282,8 @@ ] }, { + "name" : "Roger Bell West", + "id" : "Roger Bell West", "data" : [ [ "Perl 5", @@ -260,9 +297,7 @@ "Blog", 1 ] - ], - "id" : "Roger Bell West", - "name" : "Roger Bell West" + ] }, { "data" : [ @@ -289,26 +324,28 @@ "name" : "Simon Proctor" }, { + "name" : "Steven Wilson", + "id" : "Steven Wilson", "data" : [ [ "Perl 5", 1 ] - ], - "id" : "Steven Wilson", - "name" : "Steven Wilson" + ] }, { - "name" : "Walt Mankowski", - "id" : "Walt Mankowski", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Walt Mankowski", + "name" : "Walt Mankowski" }, { + "id" : "Yet Ebreo", + "name" : "Yet Ebreo", "data" : [ [ "Perl 5", @@ -322,30 +359,8 @@ "Blog", 1 ] - ], - "id" : "Yet Ebreo", - "name" : "Yet Ebreo" + ] } ] - }, - "xAxis" : { - "type" : "category" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "chart" : { - "type" : "column" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 4bcbbd0aa9..253c72ab63 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,16 +1,4 @@ { - "subtitle" : { - "text" : "Last updated at 2019-08-31 21:07:40 GMT" - }, - "yAxis" : { - "min" : 0, - "title" : { - "text" : null - } - }, - "legend" : { - "enabled" : "false" - }, "chart" : { "type" : "column" }, @@ -18,16 +6,20 @@ "type" : "category", "labels" : { "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" } } }, "tooltip" : { "pointFormat" : "<b>{point.y:.0f}</b>" }, + "subtitle" : { + "text" : "Last updated at 2019-08-31 21:14:51 GMT" + }, "series" : [ { + "name" : "Contributions", "data" : [ [ "Blog", @@ -35,7 +27,7 @@ ], [ "Perl 5", - 951 + 954 ], [ "Perl 6", @@ -43,20 +35,28 @@ ] ], "dataLabels" : { - "color" : "#FFFFFF", - "format" : "{point.y:.0f}", - "enabled" : "true", + "y" : 10, "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" }, - "y" : 10, + "format" : "{point.y:.0f}", "rotation" : -90, - "align" : "right" - }, - "name" : "Contributions" + "align" : "right", + "enabled" : "true", + "color" : "#FFFFFF" + } } ], + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 + }, + "legend" : { + "enabled" : "false" + }, "title" : { "text" : "Perl Weekly Challenge Contributions - 2019" } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 30b4e157e3..148a6b6946 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,4 +1,130 @@ { + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-08-31 21:14:51 GMT" + }, + "series" : [ + { + "name" : "Perl Weekly Challenge Languages", + "colorByPoint" : "true", + "data" : [ + { + "name" : "#001", + "drilldown" : "001", + "y" : 132 + }, + { + "drilldown" : "002", + "y" : 104, + "name" : "#002" + }, + { + "name" : "#003", + "y" : 66, + "drilldown" : "003" + }, + { + "name" : "#004", + "y" : 86, + "drilldown" : "004" + }, + { + "name" : "#005", + "drilldown" : "005", + "y" : 66 + }, + { + "drilldown" : "006", + "y" : 47, + "name" : "#006" + }, + { + "name" : "#007", + "drilldown" : "007", + "y" : 55 + }, + { + "drilldown" : "008", + "y" : 68, + "name" : "#008" + }, + { + "name" : "#009", + "drilldown" : "009", + "y" : 66 + }, + { + "name" : "#010", + "y" : 59, + "drilldown" : "010" + }, + { + "drilldown" : "011", + "y" : 78, + "name" : "#011" + }, + { + "name" : "#012", + "drilldown" : "012", + "y" : 82 + }, + { + "y" : 75, + "drilldown" : "013", + "name" : "#013" + }, + { + "name" : "#014", + "y" : 95, + "drilldown" : "014" + }, + { + "name" : "#015", + "y" : 91, + "drilldown" : "015" + }, + { + "y" : 65, + "drilldown" : "016", + "name" : "#016" + }, + { + "drilldown" : "017", + "y" : 78, + "name" : "#017" + }, + { + "drilldown" : "018", + "y" : 76, + "name" : "#018" + }, + { + "name" : "#019", + "drilldown" : "019", + "y" : 95 + }, + { + "name" : "#020", + "y" : 95, + "drilldown" : "020" + }, + { + "name" : "#021", + "y" : 66, + "drilldown" : "021" + }, + { + "drilldown" : "022", + "y" : 60, + "name" : "#022" + }, + { + "drilldown" : "023", + "y" : 59, + "name" : "#023" + } + ] + } + ], "yAxis" : { "title" : { "text" : "Total Solutions" @@ -7,17 +133,8 @@ "legend" : { "enabled" : "false" }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-08-31 21:07:40 GMT" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } + "title" : { + "text" : "Perl Weekly Challenge Language" }, "drilldown" : { "series" : [ @@ -40,7 +157,6 @@ "id" : "001" }, { - "id" : "002", "name" : "002", "data" : [ [ @@ -55,11 +171,11 @@ "Blog", 9 ] - ] + ], + "id" : "002" }, { "id" : "003", - "name" : "003", "data" : [ [ "Perl 5", @@ -73,7 +189,8 @@ "Blog", 8 ] - ] + ], + "name" : "003" }, { "id" : "004", @@ -95,6 +212,7 @@ }, { "id" : "005", + "name" : "005", "data" : [ [ "Perl 5", @@ -108,11 +226,10 @@ "Blog", 11 ] - ], - "name" : "005" + ] }, { - "name" : "006", + "id" : "006", "data" : [ [ "Perl 5", @@ -127,10 +244,9 @@ 6 ] ], - "id" : "006" + "name" : "006" }, { - "id" : "007", "name" : "007", "data" : [ [ @@ -145,10 +261,12 @@ "Blog", 9 ] - ] + ], + "id" : "007" }, { "id" : "008", + "name" : "008", "data" : [ [ "Perl 5", @@ -162,12 +280,10 @@ "Blog", 10 ] - ], - "name" : "008" + ] }, { "id" : "009", - "name" : "009", "data" : [ [ "Perl 5", @@ -181,7 +297,8 @@ "Blog", 12 ] - ] + ], + "name" : "009" }, { "data" : [ @@ -202,7 +319,7 @@ "id" : "010" }, { - "id" : "011", + "name" : "011", "data" : [ [ "Perl 5", @@ -217,7 +334,7 @@ 9 ] ], - "name" : "011" + "id" : "011" }, { "id" : "012", @@ -238,7 +355,7 @@ "name" : "012" }, { - "name" : "013", + "id" : "013", "data" : [ [ "Perl 5", @@ -253,10 +370,10 @@ 12 ] ], - "id" : "013" + "name" : "013" }, { - "id" : "014", + "name" : "014", "data" : [ [ "Perl 5", @@ -271,10 +388,9 @@ 14 ] ], - "name" : "014" + "id" : "014" }, { - "name" : "015", "data" : [ [ "Perl 5", @@ -289,10 +405,10 @@ 13 ] ], + "name" : "015", "id" : "015" }, { - "name" : "016", "data" : [ [ "Perl 5", @@ -307,6 +423,7 @@ 11 ] ], + "name" : "016", "id" : "016" }, { @@ -346,6 +463,7 @@ "id" : "018" }, { + "id" : "019", "data" : [ [ "Perl 5", @@ -360,10 +478,10 @@ 13 ] ], - "name" : "019", - "id" : "019" + "name" : "019" }, { + "id" : "020", "data" : [ [ "Perl 5", @@ -378,11 +496,9 @@ 13 ] ], - "name" : "020", - "id" : "020" + "name" : "020" }, { - "id" : "021", "data" : [ [ "Perl 5", @@ -397,10 +513,10 @@ 9 ] ], - "name" : "021" + "name" : "021", + "id" : "021" }, { - "name" : "022", "data" : [ [ "Perl 5", @@ -415,14 +531,14 @@ 7 ] ], + "name" : "022", "id" : "022" }, { - "id" : "023", "data" : [ [ "Perl 5", - 29 + 32 ], [ "Perl 6", @@ -433,145 +549,29 @@ 5 ] ], - "name" : "023" + "name" : "023", + "id" : "023" } ] }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, - "tooltip" : { - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "followPointer" : "true", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" - }, - "series" : [ - { - "data" : [ - { - "drilldown" : "001", - "y" : 132, - "name" : "#001" - }, - { - "name" : "#002", - "drilldown" : "002", - "y" : 104 - }, - { - "name" : "#003", - "y" : 66, - "drilldown" : "003" - }, - { - "name" : "#004", - "y" : 86, - "drilldown" : "004" - }, - { - "y" : 66, - "drilldown" : "005", - "name" : "#005" - }, - { - "drilldown" : "006", - "y" : 47, - "name" : "#006" - }, - { - "name" : "#007", - "y" : 55, - "drilldown" : "007" - }, - { - "name" : "#008", - "y" : 68, - "drilldown" : "008" - }, - { - "name" : "#009", - "drilldown" : "009", - "y" : 66 - }, - { - "name" : "#010", - "drilldown" : "010", - "y" : 59 - }, - { - "y" : 78, - "drilldown" : "011", - "name" : "#011" - }, - { - "name" : "#012", - "drilldown" : "012", - "y" : 82 - }, - { - "y" : 75, - "drilldown" : "013", - "name" : "#013" - }, - { - "y" : 95, - "drilldown" : "014", - "name" : "#014" - }, - { - "name" : "#015", - "drilldown" : "015", - "y" : 91 - }, - { - "name" : "#016", - "y" : 65, - "drilldown" : "016" - }, |
