diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-12-20 23:53:24 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-12-20 23:53:24 +0000 |
| commit | ab7cf69d8c1eeb832f77c5bad1bdd9e65aa55418 (patch) | |
| tree | 7807a9d97a17e86e21ef450516bdf278377d2c46 | |
| parent | 4d50d79113096538e18ef2d2e485d80cde885de2 (diff) | |
| download | perlweeklychallenge-club-ab7cf69d8c1eeb832f77c5bad1bdd9e65aa55418.tar.gz perlweeklychallenge-club-ab7cf69d8c1eeb832f77c5bad1bdd9e65aa55418.tar.bz2 perlweeklychallenge-club-ab7cf69d8c1eeb832f77c5bad1bdd9e65aa55418.zip | |
- Added solutions by Ulrich Rieke.
| -rw-r--r-- | challenge-039/ulrich-rieke/perl6/ch-1.p6 | 54 | ||||
| -rw-r--r-- | challenge-039/ulrich-rieke/perl6/ch-2.p6 | 57 | ||||
| -rw-r--r-- | stats/pwc-current.json | 133 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 68 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 598 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 866 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 40 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 40 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 38 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 28 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 124 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 328 |
12 files changed, 1250 insertions, 1124 deletions
diff --git a/challenge-039/ulrich-rieke/perl6/ch-1.p6 b/challenge-039/ulrich-rieke/perl6/ch-1.p6 new file mode 100644 index 0000000000..91464b2460 --- /dev/null +++ b/challenge-039/ulrich-rieke/perl6/ch-1.p6 @@ -0,0 +1,54 @@ +use v6 ; + +#the basic idea is to read in the file, to convert the access( IN ) +#and the departure times to minutes and to add a tag whether we move +#in( "i" ) or out ("o"). If we then order the times by minutes we can +#keep a count of people inside and determine the number of minutes +#that elapsed between first person arriving and last person leaving + +sub readFile( Str $filename ) { + my @accesstimes ; + my $fh = open $filename, :r ; + for $fh.lines -> $line { + my @fields = $line.split(/\s+/) ; + my $start = @fields[3] ; + my $stop = @fields[5] ; + @accesstimes.push( convertToMinutes( $start ).Str ~ "i" ) ; + @accesstimes.push( convertToMinutes( $stop ).Str ~ "o" ) ; + } + $fh.close ; + return @accesstimes ; +} + +sub convertToMinutes( Str $time --> Int ) { + (my $hours , my $minutes ) = $time.split( /':'/ ) ; + return $hours * 60 + $minutes ; +} + +sub orderByTime( *@times ) { + my @ordered = @times.sort( { $^a.substr(0 , $^a.chars - 1 ).Int <=> + $^b.substr(0 , $^b.chars - 1 ).Int } ) ; + return @ordered ; +} + +sub MAIN( Str $filename ) { + my @times = readFile( $filename ) ; + my @orderedTimes = orderByTime( @times ) ; + my $starttime = @orderedTimes[0] ; + my $people_Inside = 0 ; + my $minutes_On ; + for @orderedTimes -> $time { + if ($time.substr( *-1 , 1 ) eq "i" ) { + $people_Inside++ ; + } + else { + $people_Inside-- ; + if ( $people_Inside == 0 ) { + $minutes_On = $time.substr(0 , $time.chars - 1 ).Int - + $starttime.substr(0 , $starttime.chars - 1 ).Int ; + last ; + } + } + } + say ("Longest time lights on is " ~ $minutes_On.Str ~ " minutes!") ; +} diff --git a/challenge-039/ulrich-rieke/perl6/ch-2.p6 b/challenge-039/ulrich-rieke/perl6/ch-2.p6 new file mode 100644 index 0000000000..45406f93c8 --- /dev/null +++ b/challenge-039/ulrich-rieke/perl6/ch-2.p6 @@ -0,0 +1,57 @@ +use v6 ; + + +sub hasSameOrder( Str $op1 , Str $op2 --> Bool) { + my @first_order_oper = <* /> ; + my @second_order_oper = <- +> ; + return ( ($op1 (elem) @first_order_oper) && + ( $op2 (elem) @first_order_oper) ) || ( ($op1 (elem) + @second_order_oper ) && ( $op2 (elem) + @second_order_oper ) ) ; +} + + +sub toRPN( Str $expression --> Str ) { + my Str $rpn ; + my @first_order_oper = <* /> ; + my @second_order_oper = <- +> ; + my token decimal { \d+ } ; + my token operand {<[+\-*/]>} ; + my regex float { + <decimal>? + '.' + <decimal> + } ; + my regex number { + <decimal> || <float> + } ; + if ( $expression ~~ /(<number>) \s+ (<operand>) \s+ (<number>) (\s+ ( <operand>) + \s+ (<number>))?/ ) { + if ( $3 ) { + if ((~$3[0] (elem) @first_order_oper) && ( ~$1 (elem) + @second_order_oper) ) { + $rpn = ~$2 ~ " " ~ ~$3[1] ~ " " ~ ~$3[0] ~ " " ~ ~$0 ~ + " " ~ ~$1 ; + } + if ((~$3[0] (elem) @second_order_oper) && ( ~$1 (elem) + @first_order_oper)) { + $rpn = ~$0 ~ " " ~ ~$2 ~ " " ~ ~$1 ~ " " ~ ~$3[1] ~ " " + ~ ~$3[0] ; + } + if ( hasSameOrder( ~$1 , ~$3[0] )) { + $rpn = ~$0 ~ " " ~ ~$2 ~ " " ~ ~$1 ~ ~ " " ~$3[1] ~ " " ~ ~$3[0] ; + } + } + else { #no second operator of whatever same or different precedence + $rpn = ~$0 ~ " " ~ ~$2 ~ " " ~ ~$1 ; + } + } + else { + $rpn = "Not tested in this basic version or wrong format!" ; + } + return $rpn ; +} + +sub MAIN( Str $expression ) { + say toRPN( $expression ) ; +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 9781e8bf67..2c68595ad0 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,47 +1,44 @@ { - "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 - }, "chart" : { "type" : "column" }, - "subtitle" : { - "text" : "[Champions: 11] Last updated at 2019-12-20 23:35:35 GMT" + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } }, "series" : [ { "data" : [ { + "name" : "Andrezgz", "y" : 2, - "drilldown" : "Andrezgz", - "name" : "Andrezgz" + "drilldown" : "Andrezgz" }, { - "name" : "Daniel Mita", "drilldown" : "Daniel Mita", + "name" : "Daniel Mita", "y" : 1 }, { - "y" : 2, "name" : "Duane Powell", + "y" : 2, "drilldown" : "Duane Powell" }, { - "y" : 5, "name" : "Javier Luque", + "y" : 5, "drilldown" : "Javier Luque" }, { - "name" : "Laurent Rosenfeld", "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", "y" : 5 }, { - "y" : 2, "drilldown" : "Nazareno Delucca", - "name" : "Nazareno Delucca" + "name" : "Nazareno Delucca", + "y" : 2 }, { "drilldown" : "Noud", @@ -49,50 +46,46 @@ "y" : 2 }, { - "y" : 4, + "drilldown" : "Roger Bell West", "name" : "Roger Bell West", - "drilldown" : "Roger Bell West" + "y" : 4 }, { - "y" : 4, + "drilldown" : "Ruben Westerberg", "name" : "Ruben Westerberg", - "drilldown" : "Ruben Westerberg" + "y" : 4 }, { + "y" : 5, "name" : "Ryan Thompson", - "drilldown" : "Ryan Thompson", - "y" : 5 + "drilldown" : "Ryan Thompson" }, { + "drilldown" : "Steven Wilson", "y" : 2, - "name" : "Steven Wilson", - "drilldown" : "Steven Wilson" + "name" : "Steven Wilson" + }, + { + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke", + "y" : 2 } ], - "colorByPoint" : 1, - "name" : "Perl Weekly Challenge - 039" + "name" : "Perl Weekly Challenge - 039", + "colorByPoint" : 1 } ], - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } - } - }, "drilldown" : { "series" : [ { + "name" : "Andrezgz", + "id" : "Andrezgz", "data" : [ [ "Perl 5", 2 ] - ], - "name" : "Andrezgz", - "id" : "Andrezgz" + ] }, { "data" : [ @@ -105,8 +98,8 @@ "name" : "Daniel Mita" }, { - "id" : "Duane Powell", "name" : "Duane Powell", + "id" : "Duane Powell", "data" : [ [ "Perl 5", @@ -116,7 +109,6 @@ }, { "id" : "Javier Luque", - "name" : "Javier Luque", "data" : [ [ "Perl 5", @@ -130,11 +122,11 @@ "Blog", 1 ] - ] + ], + "name" : "Javier Luque" }, { "name" : "Laurent Rosenfeld", - "id" : "Laurent Rosenfeld", "data" : [ [ "Perl 5", @@ -148,11 +140,12 @@ "Blog", 1 ] - ] + ], + "id" : "Laurent Rosenfeld" }, { - "id" : "Nazareno Delucca", "name" : "Nazareno Delucca", + "id" : "Nazareno Delucca", "data" : [ [ "Perl 5", @@ -161,14 +154,14 @@ ] }, { - "id" : "Noud", - "name" : "Noud", "data" : [ [ "Perl 6", 2 ] - ] + ], + "id" : "Noud", + "name" : "Noud" }, { "data" : [ @@ -181,10 +174,11 @@ 2 ] ], - "name" : "Roger Bell West", - "id" : "Roger Bell West" + "id" : "Roger Bell West", + "name" : "Roger Bell West" }, { + "id" : "Ruben Westerberg", "data" : [ [ "Perl 5", @@ -195,11 +189,9 @@ 2 ] ], - "id" : "Ruben Westerberg", "name" : "Ruben Westerberg" }, { - "name" : "Ryan Thompson", "id" : "Ryan Thompson", "data" : [ [ @@ -214,32 +206,55 @@ "Blog", 1 ] - ] + ], + "name" : "Ryan Thompson" }, { + "id" : "Steven Wilson", "data" : [ [ "Perl 5", 2 ] ], - "name" : "Steven Wilson", - "id" : "Steven Wilson" + "name" : "Steven Wilson" + }, + { + "id" : "Ulrich Rieke", + "data" : [ + [ + "Perl 6", + 2 + ] + ], + "name" : "Ulrich Rieke" } ] }, + "subtitle" : { + "text" : "[Champions: 12] Last updated at 2019-12-20 23:52:57 GMT" + }, + "xAxis" : { + "type" : "category" + }, + "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 - 039" }, "legend" : { "enabled" : 0 }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" + "plotOptions" : { + "series" : { + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 } - }, - "xAxis" : { - "type" : "category" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index d896004583..fa7bdda50d 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,19 +1,45 @@ { + "legend" : { + "enabled" : "false" + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" + }, + "subtitle" : { + "text" : "Last updated at 2019-12-20 23:53:08 GMT" + }, + "chart" : { + "type" : "column" + }, + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } + }, "series" : [ { "dataLabels" : { - "enabled" : "true", + "align" : "right", "format" : "{point.y:.0f}", - "color" : "#FFFFFF", + "enabled" : "true", "y" : 10, - "align" : "right", "rotation" : -90, "style" : { "fontSize" : "13px", "fontFamily" : "Verdana, sans-serif" - } + }, + "color" : "#FFFFFF" }, - "name" : "Contributions", "data" : [ [ "Blog", @@ -25,39 +51,13 @@ ], [ "Perl 6", - 966 + 968 ] - ] + ], + "name" : "Contributions" } ], - "subtitle" : { - "text" : "Last updated at 2019-12-20 23:35:44 GMT" - }, - "legend" : { - "enabled" : "false" - }, - "chart" : { - "type" : "column" - }, "title" : { "text" : "Perl Weekly Challenge Contributions - 2019" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, - "xAxis" : { - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - }, - "type" : "category" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 1a793518e2..e9aa9e08c4 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,226 +1,28 @@ { - "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/>" + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-12-20 23:53:08 GMT" }, - "xAxis" : { - "type" : "category" + "legend" : { + "enabled" : "false" }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } } }, - "series" : [ - { - "name" : "Perl Weekly Challenge Languages", - "data" : [ - { - "drilldown" : "001", - "y" : 140, - "name" : "#001" - }, - { - "drilldown" : "002", - "name" : "#002", - "y" : 108 - }, - { - "y" : 71, - "name" : "#003", - "drilldown" : "003" - }, - { - "drilldown" : "004", - "name" : "#004", - "y" : 91 - }, - { - "name" : "#005", - "y" : 71, - "drilldown" : "005" - }, - { - "drilldown" : "006", - "name" : "#006", - "y" : 48 - }, - { - "drilldown" : "007", - "y" : 56, - "name" : "#007" - }, - { - "name" : "#008", - "y" : 70, - "drilldown" : "008" - }, - { - "y" : 68, - "name" : "#009", - "drilldown" : "009" - }, - { - "y" : 60, - "name" : "#010", - "drilldown" : "010" - }, - { - "y" : 79, - "name" : "#011", - "drilldown" : "011" - }, - { - "drilldown" : "012", - "name" : "#012", - "y" : 83 - }, - { - "drilldown" : "013", - "y" : 76, - "name" : "#013" - }, - { - "y" : 96, - "name" : "#014", - "drilldown" : "014" - }, - { - "y" : 93, - "name" : "#015", - "drilldown" : "015" - }, - { - "y" : 66, - "name" : "#016", - "drilldown" : "016" - }, - { - "y" : 79, - "name" : "#017", - "drilldown" : "017" - }, - { - "drilldown" : "018", - "y" : 76, - "name" : "#018" - }, - { - "name" : "#019", - "y" : 95, - "drilldown" : "019" - }, - { - "drilldown" : "020", - "name" : "#020", - "y" : 95 - }, - { - "name" : "#021", - "y" : 67, - "drilldown" : "021" - }, - { - "drilldown" : "022", - "name" : "#022", - "y" : 63 - }, - { - "drilldown" : "023", - "y" : 91, - "name" : "#023" - }, - { - "drilldown" : "024", - "name" : "#024", - "y" : 70 - }, - { - "drilldown" : "025", - "y" : 55, - "name" : "#025" - }, - { - "drilldown" : "026", - "y" : 70, - "name" : "#026" - }, - { - "drilldown" : "027", - "name" : "#027", - "y" : 58 - }, - { - "y" : 78, - "name" : "#028", - "drilldown" : "028" - }, - { - "y" : 77, - "name" : "#029", - "drilldown" : "029" - }, - { - "drilldown" : "030", - "name" : "#030", - "y" : 115 - }, - { - "drilldown" : "031", - "y" : 87, - "name" : "#031" - }, - { - "drilldown" : "032", - "y" : 92, - "name" : "#032" - }, - { - "name" : "#033", - "y" : 108, - "drilldown" : "033" - }, - { - "drilldown" : "034", - "y" : 60, - "name" : "#034" - }, - { - "drilldown" : "035", - "y" : 60, - "name" : "#035" - }, - { - "name" : "#036", - "y" : 61, - "drilldown" : "036" - }, - { - "drilldown" : "037", - "y" : 62, - "name" : "#037" - }, - { - "y" : 59, - "name" : "#038", - "drilldown" : "038" - }, - { - "name" : "#039", - "y" : 34, - "drilldown" : "039" - } - ], - "colorByPoint" : "true" - } - ], - "title" : { - "text" : "Perl Weekly Challenge Language" + "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" }, "drilldown" : { "series" : [ { + "name" : "001", "data" : [ [ "Perl 5", @@ -235,10 +37,11 @@ 11 ] ], - "id" : "001", - "name" : "001" + "id" : "001" }, { + "name" : "002", + "id" : "002", "data" : [ [ "Perl 5", @@ -252,11 +55,11 @@ "Blog", 9 ] - ], - "name" : "002", - "id" : "002" + ] }, { + "name" : "003", + "id" : "003", "data" : [ [ "Perl 5", @@ -270,9 +73,7 @@ "Blog", 9 ] - ], - "name" : "003", - "id" : "003" + ] }, { "data" : [ @@ -294,7 +95,6 @@ }, { "id" : "005", - "name" : "005", "data" : [ [ "Perl 5", @@ -308,9 +108,12 @@ "Blog", 12 ] - ] + ], + "name" : "005" }, { + "name" : "006", + "id" : "006", "data" : [ [ "Perl 5", @@ -324,9 +127,7 @@ "Blog", 7 ] - ], - "name" : "006", - "id" : "006" + ] }, { "data" : [ @@ -343,10 +144,11 @@ 10 ] ], - "name" : "007", - "id" : "007" + "id" : "007", + "name" : "007" }, { + "name" : "008", "data" : [ [ "Perl 5", @@ -361,12 +163,11 @@ 12 ] ], - "name" : "008", "id" : "008" }, { - "id" : "009", "name" : "009", + "id" : "009", "data" : [ [ "Perl 5", @@ -383,6 +184,7 @@ ] }, { + "name" : "010", "data" : [ [ "Perl 5", @@ -397,11 +199,9 @@ 11 ] ], - "id" : "010", - "name" : "010" + "id" : "010" }, { - "id" : "011", "name" : "011", "data" : [ [ @@ -416,9 +216,12 @@ "Blog", 10 ] - ] + ], + "id" : "011" }, { + "name" : "012", + "id" : "012", "data" : [ [ "Perl 5", @@ -432,9 +235,7 @@ "Blog", 11 ] - ], - "name" : "012", - "id" : "012" + ] }, { "data" : [ @@ -455,6 +256,8 @@ "name" : "013" }, { + "name" : "014", + "id" : "014", "data" : [ [ "Perl 5", @@ -468,9 +271,7 @@ "Blog", 15 ] - ], - "id" : "014", - "name" : "014" + ] }, { "data" : [ @@ -492,7 +293,6 @@ }, { "id" : "016", - "name" : "016", "data" : [ [ "Perl 5", @@ -506,7 +306,8 @@ "Blog", 12 ] - ] + ], + "name" : "016" }, { "data" : [ @@ -541,12 +342,10 @@ 14 ] ], - "name" : "018", - "id" : "018" + "id" : "018", + "name" : "018" }, { - "id" : "019", - "name" : "019", "data" : [ [ "Perl 5", @@ -560,11 +359,12 @@ "Blog", 13 ] - ] + ], + "id" : "019", + "name" : "019" }, { "id" : "020", - "name" : "020", "data" : [ [ "Perl 5", @@ -578,9 +378,11 @@ "Blog", 13 ] - ] + ], + "name" : "020" }, { + "id" : "021", "data" : [ [ "Perl 5", @@ -595,10 +397,11 @@ 10 ] ], - "id" : "021", "name" : "021" }, { + "name" : "022", + "id" : "022", "data" : [ [ "Perl 5", @@ -612,11 +415,10 @@ "Blog", 10 ] - ], - "name" : "022", - "id" : "022" + ] }, { + "id" : "023", "data" : [ [ "Perl 5", @@ -631,10 +433,10 @@ 12 ] ], - "id" : "023", "name" : "023" }, { + "name" : "024", "data" : [ [ "Perl 5", @@ -649,10 +451,10 @@ 11 ] ], - "name" : "024", "id" : "024" }, { + "id" : "025", "data" : [ [ "Perl 5", @@ -667,12 +469,10 @@ 12 ] ], - "name" : "025", - "id" : "025" + "name" : "025" }, { "name" : "026", - "id" : "026", "data" : [ [ "Perl 5", @@ -686,9 +486,11 @@ "Blog", 10 ] - ] + ], + "id" : "026" }, { + "name" : "027", "data" : [ [ "Perl 5", @@ -703,10 +505,10 @@ 9 ] ], - "name" : "027", "id" : "027" }, { + "id" : "028", "data" : [ [ "Perl 5", @@ -721,12 +523,10 @@ 9 ] ], - "name" : "028", - "id" : "028" + "name" : "028" }, { "id" : "029", - "name" : "029", "data" : [ [ "Perl 5", @@ -740,7 +540,8 @@ "Blog", 12 ] - ] + ], + "name" : "029" }, { "data" : [ @@ -757,11 +558,10 @@ 10 ] ], - "name" : "030", - "id" : "030" + "id" : "030", + "name" : "030" }, { - "name" : "031", "id" : "031", "data" : [ [ @@ -776,9 +576,11 @@ "Blog", 9 ] - ] + ], + "name" : "031" }, { + "name" : "032", "data" : [ [ "Perl 5", @@ -793,12 +595,10 @@ 10 |
