diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-07-26 12:44:41 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-07-26 12:44:41 +0100 |
| commit | d1adf5e81990dc94b7322e8d464e2352833f0267 (patch) | |
| tree | 4c8991888b69247d713650c2e7e74b004e50384d | |
| parent | 8b31784d9239d87e9f76e1f3dffba03c885b0b4e (diff) | |
| download | perlweeklychallenge-club-d1adf5e81990dc94b7322e8d464e2352833f0267.tar.gz perlweeklychallenge-club-d1adf5e81990dc94b7322e8d464e2352833f0267.tar.bz2 perlweeklychallenge-club-d1adf5e81990dc94b7322e8d464e2352833f0267.zip | |
- Added solutions by Laurent Rosenfeld.
| -rw-r--r-- | challenge-018/laurent-rosenfeld/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-018/laurent-rosenfeld/perl6/ch-2.p6 | 76 | ||||
| -rw-r--r-- | stats/pwc-current.json | 198 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 86 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 334 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 866 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 26 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 114 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 110 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 48 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 44 |
11 files changed, 990 insertions, 913 deletions
diff --git a/challenge-018/laurent-rosenfeld/blog1.txt b/challenge-018/laurent-rosenfeld/blog1.txt new file mode 100644 index 0000000000..073057274a --- /dev/null +++ b/challenge-018/laurent-rosenfeld/blog1.txt @@ -0,0 +1 @@ +http://blogs.perl.org/users/laurent_r/2019/07/perl-weekly-challenge-18-priority-queues-and-binary-heaps-in-perl-6.html diff --git a/challenge-018/laurent-rosenfeld/perl6/ch-2.p6 b/challenge-018/laurent-rosenfeld/perl6/ch-2.p6 new file mode 100644 index 0000000000..044584572f --- /dev/null +++ b/challenge-018/laurent-rosenfeld/perl6/ch-2.p6 @@ -0,0 +1,76 @@ +use v6; +sub new-queue { + my @queue; # an AoA + sub is_empty { + @queue.elems == 0; + } + sub insert_with_prio ($item, Int $prio) { + my $index = first {@queue[$_][0] == $prio}, @queue.keys; + if (defined $index) { + push @queue[$index][1], $item; + } else { + push @queue, [$prio, [$item]]; + my $idx = @queue.end; + add-to-queue($idx); + } + } + sub pull_highest_prio { + return Nil if is-empty; + my $result = shift @queue[0][1]; + take-from-heap if @queue[0][1].elems == 0; + return $result; + } + sub add-to-queue ($index is rw) { + my $index-val = @queue[$index]; + while ($index) { + my $parent-idx = Int( ($index - 1) /2); + my $parent-val = @queue[$parent-idx]; + last if $parent-val[0] > $index-val[0]; + @queue[$index] = $parent-val; + $index = $parent-idx; + } + @queue[$index] = $index-val; + } + sub take-from-heap { + my $index = 0; + loop { + my $left-index = 2 * $index + 1; + # right-index is $left-index + 1 + unless (defined @queue[$left-index] or + defined @queue[$left-index + 1]) { + @queue.splice($index, 1); + last; + } + unless defined @queue[$left-index + 1] { + @queue[$index] = @queue[$left-index]:delete; + last; + } + unless defined @queue[$left-index] { + @queue[$index] = @queue[$left-index + 1]:delete; + last; + } + # both children are defined if we get here + my $next-index = ($left-index, + $left-index + 1).max({@queue[$_][0]}); + @queue[$index] = @queue[$next-index]; + $index = $next-index; + } + } + + return &is_empty, &insert_with_prio, &pull_highest_prio; +} +my (&is-empty, &insert, &pull-prio) = new-queue; +# Testing the above code: 20 insertions and then trying 30 deletions +for 1..20 -> $num { + insert($num, + $num %% 10 ?? 10 !! + $num %% 5 ?? 5 !! + $num %% 3 ?? 3 !! + $num %% 2 ?? 2 !! + 1); +} +for 1..30 -> $num { + last if is-empty; + say pull-prio; +} +say "Empty queue" if is-empty(); diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 81990d32e8..b8e12679d3 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,37 +1,118 @@ { - "chart" : { - "type" : "column" + "legend" : { + "enabled" : 0 + }, + "title" : { + "text" : "Perl Weekly Challenge - 018" + }, + "xAxis" : { + "type" : "category" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "subtitle" : { + "text" : "[Champions: 9] Last updated at 2019-07-26 10:48:59 GMT" }, + "tooltip" : { + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", + "followPointer" : 1, + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "series" : [ + { + "colorByPoint" : 1, + "data" : [ + { + "name" : "Andrezgz", + "drilldown" : "Andrezgz", + "y" : 2 + }, + { + "y" : 2, + "name" : "Duane Powell", + "drilldown" : "Duane Powell" + }, + { + "y" : 2, + "drilldown" : "E. Choroba", + "name" : "E. Choroba" + }, + { + "name" : "Laurent Rosenfeld", + "drilldown" : "Laurent Rosenfeld", + "y" : 6 + }, + { + "drilldown" : "Ozzy", + "name" : "Ozzy", + "y" : 1 + }, + { + "name" : "Roger Bell West", + "drilldown" : "Roger Bell West", + "y" : 2 + }, + { + "y" : 4, + "name" : "Ruben Westerberg", + "drilldown" : "Ruben Westerberg" + }, + { + "name" : "Simon Proctor", + "drilldown" : "Simon Proctor", + "y" : 2 + }, + { + "drilldown" : "Steven Wilson", + "name" : "Steven Wilson", + "y" : 1 + } + ], + "name" : "Perl Weekly Challenge - 018" + } + ], "drilldown" : { "series" : [ { - "name" : "Andrezgz", + "id" : "Andrezgz", "data" : [ [ "Perl 5", 2 ] ], - "id" : "Andrezgz" + "name" : "Andrezgz" }, { + "name" : "Duane Powell", "data" : [ [ "Perl 5", 2 ] ], - "id" : "Duane Powell", - "name" : "Duane Powell" + "id" : "Duane Powell" }, { - "name" : "E. Choroba", "data" : [ [ "Perl 5", 2 ] ], + "name" : "E. Choroba", "id" : "E. Choroba" }, { @@ -43,11 +124,11 @@ ], [ "Perl 6", - 1 + 2 ], [ "Blog", - 1 + 2 ] ], "name" : "Laurent Rosenfeld" @@ -59,21 +140,22 @@ 1 ] ], - "id" : "Ozzy", - "name" : "Ozzy" + "name" : "Ozzy", + "id" : "Ozzy" }, { "name" : "Roger Bell West", - "id" : "Roger Bell West", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Roger Bell West" }, { "id" : "Ruben Westerberg", + "name" : "Ruben Westerberg", "data" : [ [ "Perl 5", @@ -83,8 +165,7 @@ "Perl 6", 2 ] - ], - "name" : "Ruben Westerberg" + ] }, { "name" : "Simon Proctor", @@ -97,99 +178,18 @@ "id" : "Simon Proctor" }, { - "name" : "Steven Wilson", "data" : [ [ "Perl 5", 1 ] ], + "name" : "Steven Wilson", "id" : "Steven Wilson" } ] }, - "subtitle" : { - "text" : "[Champions: 9] Last updated at 2019-07-25 22:47:58 GMT" - }, - "series" : [ - { - "name" : "Perl Weekly Challenge - 018", - "data" : [ - { - "y" : 2, - "drilldown" : "Andrezgz", - "name" : "Andrezgz" - }, - { - "y" : 2, - "drilldown" : "Duane Powell", - "name" : "Duane Powell" - }, - { - "y" : 2, - "name" : "E. Choroba", - "drilldown" : "E. Choroba" - }, - { - "name" : "Laurent Rosenfeld", - "drilldown" : "Laurent Rosenfeld", - "y" : 4 - }, - { - "name" : "Ozzy", - "drilldown" : "Ozzy", - "y" : 1 - }, - { - "drilldown" : "Roger Bell West", - "name" : "Roger Bell West", - "y" : 2 - }, - { - "y" : 4, - "drilldown" : "Ruben Westerberg", - "name" : "Ruben Westerberg" - }, - { - "name" : "Simon Proctor", - "drilldown" : "Simon Proctor", - "y" : 2 - }, - { - "y" : 1, - "name" : "Steven Wilson", - "drilldown" : "Steven Wilson" - } - ], - "colorByPoint" : 1 - } - ], - "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 - }, - "title" : { - "text" : "Perl Weekly Challenge - 018" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } - }, - "xAxis" : { - "type" : "category" - }, - "legend" : { - "enabled" : 0 + "chart" : { + "type" : "column" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 1bc4bd34ae..095d75f35e 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,23 +1,38 @@ { + "chart" : { + "type" : "column" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" + }, + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } + }, + "legend" : { + "enabled" : "false" + }, "series" : [ { "name" : "Contributions", - "dataLabels" : { - "format" : "{point.y:.0f}", - "color" : "#FFFFFF", - "align" : "right", - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - }, - "y" : 10, - "enabled" : "true", - "rotation" : -90 - }, "data" : [ [ "Blog", - 164 + 165 ], [ "Perl 5", @@ -25,39 +40,24 @@ ], [ "Perl 6", - 417 + 418 ] - ] - } - ], - "legend" : { - "enabled" : "false" - }, - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + ], + "dataLabels" : { + "enabled" : "true", + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + }, + "format" : "{point.y:.0f}", + "color" : "#FFFFFF", + "rotation" : -90, + "align" : "right", + "y" : 10 } } - }, - "yAxis" : { - "min" : 0, - "title" : { - "text" : null - } - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, - "chart" : { - "type" : "column" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" - }, + ], "subtitle" : { - "text" : "Last updated at 2019-07-25 22:48:06 GMT" + "text" : "Last updated at 2019-07-26 10:49:29 GMT" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index c1adbe04f3..95fee412fb 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,11 +1,139 @@ { + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 + } + }, + "series" : [ + { + "data" : [ + { + "drilldown" : "001", + "y" : 123, + "name" : "#001" + }, + { + "name" : "#002", + "y" : 104, + "drilldown" : "002" + }, + { + "drilldown" : "003", + "y" : 66, + "name" : "#003" + }, + { + "y" : 84, + "drilldown" : "004", + "name" : "#004" + }, + { + "name" : "#005", + "y" : 66, + "drilldown" : "005" + }, + { + "name" : "#006", + "drilldown" : "006", + "y" : 47 + }, + { + "name" : "#007", + "drilldown" : "007", + "y" : 54 + }, + { + "name" : "#008", + "drilldown" : "008", + "y" : 67 + }, + { + "name" : "#009", + "drilldown" : "009", + "y" : 65 + }, + { + "name" : "#010", + "drilldown" : "010", + "y" : 58 + }, + { + "drilldown" : "011", + "y" : 77, + "name" : "#011" + }, + { + "y" : 81, + "drilldown" : "012", + "name" : "#012" + }, + { + "drilldown" : "013", + "y" : 74, + "name" : "#013" + }, + { + "drilldown" : "014", + "y" : 94, + "name" : "#014" + }, + { + "name" : "#015", + "y" : 90, + "drilldown" : "015" + }, + { + "drilldown" : "016", + "y" : 64, + "name" : "#016" + }, + { + "y" : 77, + "drilldown" : "017", + "name" : "#017" + }, + { + "name" : "#018", + "y" : 22, + "drilldown" : "018" + } + ], + "colorByPoint" : "true", + "name" : "Perl Weekly Challenge Languages" + } + ], + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-07-26 10:49:29 GMT" + }, "legend" : { "enabled" : "false" }, + "xAxis" : { + "type" : "category" + }, + "tooltip" : { + "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>", + "followPointer" : "true", + "headerFormat" : "<span style=\"font-size:11px\"></span>" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "title" : { + "text" : "Perl Weekly Challenge Language" + }, + "chart" : { + "type" : "column" + }, "drilldown" : { "series" : [ { - "id" : "001", "data" : [ [ "Perl 5", @@ -20,10 +148,10 @@ 10 ] ], + "id" : "001", "name" : "001" }, { - "name" : "002", "data" : [ [ "Perl 5", @@ -38,9 +166,11 @@ 9 ] ], + "name" : "002", "id" : "002" }, { + "name" : "003", "id" : "003", "data" : [ [ @@ -55,10 +185,11 @@ "Blog", 8 ] - ], - "name" : "003" + ] }, { + "id" : "004", + "name" : "004", "data" : [ [ "Perl 5", @@ -72,9 +203,7 @@ "Blog", 9 ] - ], - "id" : "004", - "name" : "004" + ] }, { "data" : [ @@ -91,12 +220,12 @@ 11 ] ], - "id" : "005", - "name" : "005" + "name" : "005", + "id" : "005" }, { - "name" : "006", "id" : "006", + "name" : "006", "data" : [ [ "Perl 5", @@ -113,6 +242,8 @@ ] }, { + "name" : "007", + "id" : "007", "data" : [ [ "Perl 5", @@ -126,12 +257,9 @@ "Blog", 8 ] - ], - "id" : "007", - "name" : "007" + ] }, { - "id" : "008", "data" : [ [ "Perl 5", @@ -146,9 +274,12 @@ 9 ] ], + "id" : "008", "name" : "008" }, { + "name" : "009", + "id" : "009", "data" : [ [ "Perl 5", @@ -162,12 +293,9 @@ "Blog", 11 ] - ], - "id" : "009", - "name" : "009" + ] }, { - "name" : "010", "data" : [ [ "Perl 5", @@ -182,10 +310,12 @@ 9 ] ], - "id" : "010" + "id" : "010", + "name" : "010" }, { "name" : "011", + "id" : "011", "data" : [ [ "Perl 5", @@ -199,8 +329,7 @@ "Blog", 8 ] - ], - "id" : "011" + ] }, { "data" : [ @@ -221,7 +350,6 @@ "name" : "012" }, { - "name" : "013", "data" : [ [ "Perl 5", @@ -236,11 +364,10 @@ 11 ] ], + "name" : "013", "id" : "013" }, { - "name" : "014", - "id" : "014", "data" : [ [ "Perl 5", @@ -254,11 +381,11 @@ "Blog", 13 ] - ] + ], + "name" : "014", + "id" : "014" }, { - "name" : "015", - "id" : "015", "data" : [ [ "Perl 5", @@ -272,9 +399,13 @@ "Blog", 12 ] - ] + ], + "id" : "015", + "name" : "015" }, { + "name" : "016", + "id" : "016", "data" : [ [ "Perl 5", @@ -288,9 +419,7 @@ "Blog", 10 ] - ], - "id" : "016", - "name" : "016" + ] }, { "data" : [ @@ -307,10 +436,12 @@ 10 ] ], - "id" : "017", - "name" : "017" + "name" : "017", + "id" : "017" }, { + "name" : "018", + "id" : "018", "data" : [ [ "Perl 5", @@ -318,145 +449,14 @@ ], [ "Perl 6", - 6 + 7 ], [ "Blog", - 1 + 2 ] - ], - "id" : "018", - "name" : "018" + ] } ] - }, - "series" : [ - { - "data" : [ - { - "name" : "#001", - "drilldown" : "001", - "y" : 123 - }, - { - "y" : 104, - "drilldown" : "002", - "name" : "#002" - }, - { - "drilldown" : "003", - "y" : 66, - "name" : "#003" - }, - { - "drilldown" : "004", - "y" : 84, - "name" : "#004" - }, - { - "y" : 66, - "drilldown" : "005", - "name" : "#005" - }, - { - "name" : "#006", - "drilldown" : "006", - "y" : 47 - }, - { - "name" : "#007", - "drilldown" : "007", - "y" : 54 - }, - { - "name" : "#008", - "drilldown" : "008", - "y" : 67 - }, - { - "drilldown" : "009", - "y" : 65, - "name" : "#009" - }, - { - "name" : "#010", - "drilldown" : "010", - "y" : 58 - }, - { - "name" : "#011", - "drilldown" : "011", - "y" : 77 - }, - { - "name" : "#012", - "drilldown" : "012", - "y" : 81 - }, - { - "y" : 74, - "drilldown" : "013", - "name" : "#013" - }, - { - "drilldown" : "014", - "y" : 94, - "name" : "#014" - }, - { - "y" : 90, - "drilldown" : "015", - "name" : "#015" - }, - { - "name" : "#016", - "y" : 64, - "drilldown" : "016" - }, - { - "name" : "#017", - "y" : 77, - "drilldown" : "017" - }, - { - "name" : "#018", - "y" : 20, - "drilldown" : "018" - } - ], - "colorByPoint" : "true", - "name" : "Perl Weekly Challenge Languages" - } - ], - "tooltip" : { - "followPointer" : "true", - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "xAxis" : { - "type" : "category" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, - "chart" : { - "type" : "column" - }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-07-25 22:48:06 GMT" } } diff --git a/stats/pwc-leaders.json b/stats/pwc-leaders.json index 2252830a36..22c6e2c3f5 100644 --- a/stats/pwc-leaders.json +++ b/stats/pwc-leaders.json @@ -1,418 +1,152 @@ { - "legend" : { - "enabled" : "false" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } - }, - "series" : [ - { - "data" : [ - { - "drilldown" : "Laurent Rosenfeld", - "name" : "#1: Laurent Rosenfeld", - "y" : 184 - }, - { - "drilldown" : "Joelle Maslak", - "name" : "#2: Joelle Maslak", - "y" : 180 - }, - { - "name" : "#3: Jaldhar H. Vyas", - "drilldown" : "Jaldhar H. Vyas", - "y" : 142 - }, - { - "y" : 132, - "name" : "#4: Ruben Westerberg", - "drilldown" : "Ruben Westerberg" - }, - { - "y" : 106, - "drilldown" : "Athanasius", - "name" : "#5: Athanasius" - }, - { - "name" : "#6: Adam Russell", - "drilldown" : "Adam Russell", - "y" : 104 - }, - { - "y" : 94, - "name" : "#7: Arne Sommer", - "drilldown" : "Arne Sommer" - }, - { - "y" : 82, - "name" : "#8: E. Choroba", - "drilldown" : "E. Choroba" - }, - { - "y" : 80, - "name" : "#9: Simon Proctor", - "drilldown" : "Simon Proctor" - }, - { - "y" : 78, - "name" : "#10: Francis Whittle", - "drilldown" : "Francis Whittle" - }, - { - "y" : 78, - "name" : "#11: Kian-Meng Ang", - "drilldown" : "Kian-Meng Ang" - }, - { - "name" : "#12: Dave Jacoby", - "drilldown" : "Dave Jacoby", - "y" : 74 - }, - { - "name" : "#13: Andrezgz", - "drilldown" : "Andrezgz", - "y" : 68 - }, - { - "drilldown" : "Gustavo Chaves", - "name" : "#14: Gustavo Chaves", - "y" : 64 - }, - { - "name" : "#15: Yozen Hernandez", - "drilldown" : "Yozen Hernandez", - "y" : 64 - }, - { - "y" : 60, - "drilldown" : "Feng Chang", - "name" : "#16: Feng Chang" - }, - { - "name" : "#17: Daniel Mantovani", - "drilldown" : "Daniel Mantovani", - "y" : 56 - }, - { - "y" : 56, - "drilldown" : "Duncan C. White", - "name" : "#18: Duncan C. White" - }, - { - "drilldown" : "Steven Wilson", - "name" : "#19: Steven Wilson", - "y" : 56 - }, - { - "name" : "#20: Jo Christian Oterhals", - "drilldown" : "Jo Christian Oterhals", - "y" : 48 - }, - { - "name" : "#21: Dr James A. Smith", - "drilldown" : "Dr James A. Smith", - "y" : 44 - }, - { - "name" : "#22 |
