diff options
| -rw-r--r-- | challenge-075/ulrich-rieke/perl/ch-1.pl | 66 | ||||
| -rw-r--r-- | challenge-075/ulrich-rieke/perl/ch-2.pl | 79 | ||||
| -rw-r--r-- | stats/pwc-current.json | 81 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 68 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 552 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 390 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 32 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 104 | ||||
| -rw-r--r-- | stats/pwc-summary-181-210.json | 54 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 36 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 30 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 98 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 48 |
14 files changed, 921 insertions, 761 deletions
diff --git a/challenge-075/ulrich-rieke/perl/ch-1.pl b/challenge-075/ulrich-rieke/perl/ch-1.pl new file mode 100644 index 0000000000..03346776e4 --- /dev/null +++ b/challenge-075/ulrich-rieke/perl/ch-1.pl @@ -0,0 +1,66 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; +use Algorithm::Combinatorics qw ( combinations_with_repetition ) ; + +sub enterArray { + my @array ; + print "Enter a number ( end to end ) :\n" ; + my $number = <STDIN> ; + chomp $number ; + while ( $number ne "end" ) { + if ( $number =~ /\d+/ ) { + push( @array, $number ) ; + } + print "Enter a number ( end to end ) :\n" ; + $number = <STDIN> ; + chomp $number ; + } + return @array ; +} + +my $S = $ARGV[ 0 ] ; +my @array = enterArray( ) ; +my %coins ; +for my $elem ( @array ) { + $coins{$elem}++ ; +} +my @sorted = sort { $a <=> $b } keys %coins ; +my $maxelements ; #maximum number of a given coin that adds up to S +my $minelements ; #minimum number of a given coin adding up to S +my $solutions ; +if ( $sorted[ 0 ] > $S ) { + $solutions = 0 ; + exit( 1 ) ; +} +my @elementsHowMany = map { $S % $_ == 0 ? ($S / $_) : (int( $S / $_ ) + 1) +} @sorted ; +$maxelements = $elementsHowMany[ 0 ] ; +if ( $elementsHowMany[ -1 ] != 0 ) { + $minelements = $elementsHowMany[ -1 ] ; +} +else { + my $el ; + do { + $el = pop @elementsHowMany ; + } until ( $el != 0 ) ; + $minelements = $el ; +} +for my $len ( $minelements .. $maxelements ) { + my $iter = combinations_with_repetition (\@sorted , $len ) ; + my $p ; + while ( $p = $iter->next ) { + my $sum = 0 ; + for my $n ( @{$p} ) { + $sum += $n ; + } + if ( $sum == $S ) { + $solutions++ ; + print '[' ; + map { print "$_ " } @{$p} ; + say ']' ; + } + } +} +say $solutions ; diff --git a/challenge-075/ulrich-rieke/perl/ch-2.pl b/challenge-075/ulrich-rieke/perl/ch-2.pl new file mode 100644 index 0000000000..db03b597dd --- /dev/null +++ b/challenge-075/ulrich-rieke/perl/ch-2.pl @@ -0,0 +1,79 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; + +sub findMinMax { + my $array = shift ; + my @sorted = sort { $a <=> $b } @{$array} ; + return ( $sorted[ 0 ] , $sorted[ -1 ] ) ; +} + +sub enterArray { + my @array ; + print "Enter a number ( end to end ) :\n" ; + my $number = <STDIN> ; + chomp $number ; + while ( $number ne "end" ) { + if ( $number =~ /\d+/ ) { + push( @array, $number ) ; + } + print "Enter a number ( end to end ) :\n" ; + $number = <STDIN> ; + chomp $number ; + } + return @array ; +} + +sub printRectangle { + my $array = shift ; + my $maximum = (findMinMax( $array ))[ 1 ] ; + my $currentNumber = $maximum ; + my $len = scalar @{$array} ; + say " " ; + while ( $currentNumber > 0 ) { + print $currentNumber ; + my $line ; + for my $i ( 0 .. $len - 1 ) { + if ( $array->[ $i ] >= $currentNumber ) { + $line .= " #" ; + } + else { + $line .= " " ; + } + } + print "$line\n" ; + $currentNumber-- ; + } + print "- " x $len ; + print "-\n" ; + print " " ; + print join( ' ' , @{$array} ) ; + say " " ; +} + +#the task is equivalent to forming groups of neighboring numbers +#(at least 2 , at most the entire array). The minimum of this +#group represents the height of the rectangle, the number of +#neighbouring numbers its width. We seek the maximum product of +#all possible groups in the array +my @array = enterArray( ) ; +printRectangle( \@array ) ; +my $len = scalar @array ; +my @areas ; +my $minimum ; +my @partialArray ; +my $area ; +for my $width ( 2 .. $len - 1 ) { + for my $startindex ( 0 .. $len - $width ) { + @partialArray = @array[ $startindex .. $startindex + $width - 1] ; + my $minimum = (findMinMax( \@partialArray))[0] ; + $area = $width * $minimum ; + push( @areas , $area ) ; + } +} +$minimum = ( findMinMax(\@array) )[ 0 ] ; +$area = $minimum * $len ; +push( @areas , $area ) ; +my $maximum = (findMinMax(\@areas))[ 1 ] ; +say $maximum ; diff --git a/stats/pwc-current.json b/stats/pwc-current.json index f1f80b3e36..aecf7c1751 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -15,8 +15,8 @@ "drilldown" : "Mark Anderson" }, { - "y" : 2, "name" : "Markus Holzer", + "y" : 2, "drilldown" : "Markus Holzer" }, { @@ -26,47 +26,49 @@ }, { "name" : "Roger Bell_West", - "y" : 4, - "drilldown" : "Roger Bell_West" + "drilldown" : "Roger Bell_West", + "y" : 4 }, { "drilldown" : "Simon Green", "y" : 3, "name" : "Simon Green" + }, + { + "name" : "Ulrich Rieke", + "drilldown" : "Ulrich Rieke", + "y" : 2 } ] } ], - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "subtitle" : { - "text" : "[Champions: 6] Last updated at 2020-08-25 04:49:34 GMT" + "chart" : { + "type" : "column" }, "xAxis" : { "type" : "category" }, - "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/>" + "legend" : { + "enabled" : 0 + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } }, "plotOptions" : { "series" : { - "borderWidth" : 0, "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - } + "format" : "{point.y}", + "enabled" : 1 + }, + "borderWidth" : 0 } }, - "chart" : { - "type" : "column" - }, - "legend" : { - "enabled" : 0 + "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/>" }, "title" : { "text" : "Perl Weekly Challenge - 075" @@ -74,6 +76,7 @@ "drilldown" : { "series" : [ { + "id" : "Luca Ferrari", "data" : [ [ "Raku", @@ -84,30 +87,30 @@ 2 ] ], - "name" : "Luca Ferrari", - "id" : "Luca Ferrari" + "name" : "Luca Ferrari" }, { + "name" : "Mark Anderson", "data" : [ [ "Raku", 2 ] ], - "name" : "Mark Anderson", "id" : "Mark Anderson" }, { "id" : "Markus Holzer", - "name" : "Markus Holzer", "data" : [ [ "Raku", 2 ] - ] + ], + "name" : "Markus Holzer" }, { + "id" : "Mohammad S Anwar", "data" : [ [ "Perl", @@ -118,10 +121,10 @@ 2 ] ], - "id" : "Mohammad S Anwar", "name" : "Mohammad S Anwar" }, { + "name" : "Roger Bell_West", "data" : [ [ "Perl", @@ -132,12 +135,9 @@ 2 ] ], - "id" : "Roger Bell_West", - "name" : "Roger Bell_West" + "id" : "Roger Bell_West" }, { - "id" : "Simon Green", - "name" : "Simon Green", "data" : [ [ "Perl", @@ -147,8 +147,23 @@ "Blog", 1 ] + ], + "name" : "Simon Green", + "id" : "Simon Green" + }, + { + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke", + "data" : [ + [ + "Perl", + 2 + ] ] } ] + }, + "subtitle" : { + "text" : "[Champions: 7] Last updated at 2020-08-25 04:54:29 GMT" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index e74c6d8ea0..afd0c68b61 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -5,21 +5,23 @@ "text" : null } }, + "legend" : { + "enabled" : "false" + }, + "subtitle" : { + "text" : "Last updated at 2020-08-25 04:54:29 GMT" + }, + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + }, + "chart" : { + "type" : "column" + }, "series" : [ { - "name" : "Contributions", - "dataLabels" : { - "format" : "{point.y:.0f}", - "color" : "#FFFFFF", - "y" : 10, - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - }, - "align" : "right", - "rotation" : -90, - "enabled" : "true" - }, "data" : [ [ "Blog", @@ -27,37 +29,35 @@ ], [ "Perl", - 3104 + 3106 ], [ "Raku", 2027 ] - ] + ], + "dataLabels" : { + "enabled" : "true", + "color" : "#FFFFFF", + "rotation" : -90, + "y" : 10, + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + }, + "format" : "{point.y:.0f}", + "align" : "right" + }, + "name" : "Contributions" } ], - "subtitle" : { - "text" : "Last updated at 2020-08-25 04:49:34 GMT" - }, "xAxis" : { - "type" : "category", "labels" : { "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" } - } - }, - "chart" : { - "type" : "column" - }, - "legend" : { - "enabled" : "false" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + }, + "type" : "category" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 3ecd185fc8..875b246518 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,27 +1,16 @@ { - "legend" : { - "enabled" : "false" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } - }, - "chart" : { - "type" : "column" - }, "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>", - "followPointer" : "true" + "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" + }, + "title" : { + "text" : "Perl Weekly Challenge Language" }, "drilldown" : { "series" : [ { + "name" : "001", "data" : [ [ "Perl", @@ -36,12 +25,10 @@ 11 ] ], - "id" : "001", - "name" : "001" + "id" : "001" }, { "name" : "002", - "id" : "002", "data" : [ [ "Perl", @@ -55,11 +42,10 @@ "Blog", 10 ] - ] + ], + "id" : "002" }, { - "name" : "003", - "id" : "003", "data" : [ [ "Perl", @@ -73,9 +59,13 @@ "Blog", 9 ] - ] + ], + "name" : "003", + "id" : "003" }, { + "id" : "004", + "name" : "004", "data" : [ [ "Perl", @@ -89,9 +79,7 @@ "Blog", 10 ] - ], - "id" : "004", - "name" : "004" + ] }, { "id" : "005", @@ -113,7 +101,6 @@ }, { "name" : "006", - "id" : "006", "data" : [ [ "Perl", @@ -127,9 +114,12 @@ "Blog", 7 ] - ] + ], + "id" : "006" }, { + "id" : "007", + "name" : "007", "data" : [ [ "Perl", @@ -143,11 +133,11 @@ "Blog", 10 ] - ], - "id" : "007", - "name" : "007" + ] }, { + "id" : "008", + "name" : "008", "data" : [ [ "Perl", @@ -161,11 +151,10 @@ "Blog", 12 ] - ], - "name" : "008", - "id" : "008" + ] }, { + "name" : "009", "data" : [ [ "Perl", @@ -180,12 +169,11 @@ 13 ] ], - "id" : "009", - "name" : "009" + "id" : "009" }, { - "name" : "010", "id" : "010", + "name" : "010", "data" : [ [ "Perl", @@ -220,6 +208,7 @@ "id" : "011" }, { + "name" : "012", "data" : [ [ "Perl", @@ -234,12 +223,11 @@ 11 ] ], - "id" : "012", - "name" : "012" + "id" : "012" }, { - "name" : "013", "id" : "013", + "name" : "013", "data" : [ [ "Perl", @@ -256,6 +244,7 @@ ] }, { + "id" : "014", "data" : [ [ "Perl", @@ -270,8 +259,7 @@ 15 ] ], - "name" : "014", - "id" : "014" + "name" : "014" }, { "data" : [ @@ -292,6 +280,7 @@ "id" : "015" }, { + "name" : "016", "data" : [ [ "Perl", @@ -306,10 +295,10 @@ 12 ] ], - "name" : "016", "id" : "016" }, { + "name" : "017", "data" : [ [ "Perl", @@ -324,11 +313,9 @@ 12 ] ], - "id" : "017", - "name" : "017" + "id" : "017" }, { - "name" : "018", "id" : "018", "data" : [ [ @@ -343,10 +330,10 @@ "Blog", 14 ] - ] + ], + "name" : "018" }, { - "id" : "019", "name" : "019", "data" : [ [ @@ -361,7 +348,8 @@ "Blog", 13 ] - ] + ], + "id" : "019" }, { "id" : "020", @@ -382,6 +370,7 @@ ] }, { + "id" : "021", "data" : [ [ "Perl", @@ -396,11 +385,9 @@ 10 ] ], - "id" : "021", "name" : "021" }, { - "name" : "022", "id" : "022", "data" : [ [ @@ -415,9 +402,11 @@ "Blog", 10 ] - ] + ], + "name" : "022" }, { + "id" : "023", "data" : [ [ "Perl", @@ -432,10 +421,10 @@ 12 ] ], - "name" : "023", - "id" : "023" + "name" : "023" }, { + "name" : "024", "data" : [ [ "Perl", @@ -450,10 +439,10 @@ 11 ] ], - "name" : "024", "id" : "024" }, { + "name" : "025", "data" : [ [ "Perl", @@ -468,10 +457,10 @@ 12 ] ], - "name" : "025", "id" : "025" }, { + "name" : "026", "data" : [ [ "Perl", @@ -486,12 +475,9 @@ 10 ] ], - "id" : "026", - "name" : "026" + "id" : "026" }, { - "id" : "027", - "name" : "027", "data" : [ [ "Perl", @@ -505,9 +491,13 @@ "Blog", 9 ] - ] + ], + "name" : "027", + "id" : "027" }, { + "id" : "028", + "name" : "028", "data" : [ [ "Perl", @@ -521,9 +511,7 @@ "Blog", 9 ] - ], - "id" : "028", - "name" : "028" + ] }, { "data" : [ @@ -540,8 +528,8 @@ 12 ] ], - "id" : "029", - "name" : "029" + "name" : "029", + "id" : "029" }, { "data" : [ @@ -558,10 +546,11 @@ 10 ] ], - "id" : "030", - "name" : "030" + "name" : "030", + "id" : "030" }, { + "name" : "031", "data" : [ [ "Perl", @@ -576,12 +565,10 @@ 9 ] ], - "id" : "031", - "name" : "031" + "id" : "031" }, { "id" : "032", - "name" : "032", "data" : [ [ "Perl", @@ -595,9 +582,12 @@ "Blog", 10 ] - ] + ], + "name" : "032" }, { + "id" : "033", + "name" : "033", "data" : [ [ "Perl", @@ -611,11 +601,10 @@ "Blog", 10 ] - ], - "name" : "033", - "id" : "033" + ] }, { + "name" : "034", "data" : [ [ "Perl", @@ -630,10 +619,10 @@ 11 ] ], - "name" : "034", "id" : "034" }, { + "id" : "035", "data" : [ [ "Perl", @@ -648,12 +637,11 @@ 9 ] ], - "name" : "035", - "id" : "035" + "name" : "035" }, { - "name" : "036", "id" : "036", + "name" : "036", "data" : [ [ "Perl", @@ -670,7 +658,6 @@ ] }, { - "name" : "037", "id" : "037", "data" : [ [ @@ -685,11 +672,11 @@ "Blog", 9 ] - ] + ], + "name" : "037" }, { "id" : "038", - "name" : "038", "data" : [ [ "Perl", @@ -703,9 +690,11 @@ "Blog", 12 ] - ] + ], + "name" : "038" }, { + "id" : "039", "data" : [ [ "Perl", @@ -720,10 +709,10 @@ 12 ] ], - "id" : "039", "name" : "039" }, { + "name" : "040", "data" : [ [ "Perl", @@ -738,11 +727,9 @@ 10 ] ], - "name" : "040", "id" : "040" }, { - "name" : "041", "id" : "041", "data" : [ [ @@ -757,10 +744,10 @@ "Blog", 9 ] - ] + ], + "name" : "041" }, { - "id" : "042", "name" : "042", "data" : [ [ @@ -775,11 +762,12 @@ "Blog", 11 ] - ] + ], + "id" : "042" }, { - "name" : "043", "id" : "043", + "name" : "043", "data" : [ [ "Perl", @@ -797,7 +785,6 @@ }, { "name" : "044", - "id" : "044", "data" : [ [ "Perl", @@ -811,7 +798,8 @@ "Blog", 11 ] - ] + ], + "id" : "044" }, { "data" : [ @@ -828,8 +816,8 @@ 11 ] ], - "id" : "045", - "name" : "045" + "name" : "045", + "id" : "045" }, { "id" : "046", @@ -851,7 +839,6 @@ }, { "name" : "047", - "id" : "047", "data" : [ [ "Perl", @@ -865,11 +852,10 @@ "Blog", 10 ] - ] + ], + "id" : "047" }, { - "name" : "048", - "id" : "048", "data" : [ [ "Perl", @@ -883,9 +869,12 @@ "Blog", 12 ] - ] + ], + "name" : "048", + "id" : "048" }, { + "id" : "049", "data" : [ [ "Perl", @@ -900,7 +889,6 @@ 12 ] ], - "id" : "049", "name" : "049" }, { @@ -922,6 +910,8 @@ "id" : "050" }, { + "id" : "051", + "name" : "051", "data" : [ [ "Perl", @@ -935,13 +925,11 @@ "Blog", 11 ] - ], - "name" : "051", - "id" : "051" + ] }, { - "name" : "052", "id" : "052", + "name" : "052", "data" : [ [ "Perl", @@ -958,6 +946,7 @@ ] }, { + "id" : "053", "data" : [ [ "Perl", @@ -972,8 +961,7 @@ 15 ] ], - "name" : "053", - "id" : "053" + "name" : "053" }, { "data" : [ @@ -994,6 +982,8 @@ "id" : "054" }, { + "id" : "055", + "name" : "055", "data" : [ [ "Perl", @@ -1007,13 +997,10 @@ "Blog", 14 ] - ], - "name" : "055", - "id" : "055" + ] }, { "name" : "056", - "id" : "056", "data" : [ [ "Perl", @@ -1027,9 +1014,12 @@ "Blog", 16 ] - ] + ], + "id" : "056" }, { + "id" : "057", + "name" : "057", "data" : [ [ "Perl", @@ -1043,9 +1033,7 @@ "Blog", 15 ] - ], - "id" : "057", - "name" : "057" + ] }, { "data" : [ @@ -1066,6 +1054,7 @@ "id" : "058" }, { + "name" : "059", "data" : [ [ "Perl", @@ -1080,7 +1069,6 @@ 16 ] ], - "name" : "059", "id" : "059" }, { @@ -1098,11 +1086,10 @@ 16 ] ], - "id" : "060", - "name" : "060" + "name" : "060", + "id" : "060" }, { - "id" : "061", "name" : "061", "data" : [ [ @@ -1117,11 +1104,10 @@ "Blog", 14 ] - ] + ], + "id" : "061" }, { - "name" : "062", - "id" : "062", "data" : [ [ "Perl", @@ -1135,11 +1121,11 @@ "Blog", 11 ] - ] + ], |
