diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-08-07 01:05:44 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-08-07 01:05:44 +0100 |
| commit | 6194a90afd366a49841cbc01365dcbacefd9bb00 (patch) | |
| tree | 8c0becba3403d6d446c9151cdb0c8a8a11e68ff3 | |
| parent | 16117c591af62afe862b98210306827624258a4f (diff) | |
| download | perlweeklychallenge-club-6194a90afd366a49841cbc01365dcbacefd9bb00.tar.gz perlweeklychallenge-club-6194a90afd366a49841cbc01365dcbacefd9bb00.tar.bz2 perlweeklychallenge-club-6194a90afd366a49841cbc01365dcbacefd9bb00.zip | |
- Added solutions by Ulrich Rieke.
| -rw-r--r-- | challenge-124/ulrich-rieke/perl/ch-1.pl | 36 | ||||
| -rw-r--r-- | challenge-124/ulrich-rieke/perl/ch-2.pl | 63 | ||||
| -rw-r--r-- | challenge-124/ulrich-rieke/raku/ch-2.raku | 45 | ||||
| -rw-r--r-- | stats/pwc-current.json | 175 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 68 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 838 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 372 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 96 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 100 | ||||
| -rw-r--r-- | stats/pwc-summary-181-210.json | 48 | ||||
| -rw-r--r-- | stats/pwc-summary-211-240.json | 92 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 108 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 86 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 42 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 522 |
16 files changed, 1450 insertions, 1287 deletions
diff --git a/challenge-124/ulrich-rieke/perl/ch-1.pl b/challenge-124/ulrich-rieke/perl/ch-1.pl new file mode 100644 index 0000000000..82f74f4eed --- /dev/null +++ b/challenge-124/ulrich-rieke/perl/ch-1.pl @@ -0,0 +1,36 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; + +my $edge = 5 ; +my $internal = 5 ; +print " " x $edge ; +say "^" x $internal ; +for my $i (1 .. 3 ) { + $edge-- ; + if ( $i > 1 ) { + $internal += 2 ; + } + say " " x $edge . "^" . " " x $internal . "^" ; +} +for (1 .. 4 ) { + say " " x $edge . "^" . " " x $internal . "^" ; +} +for ( 1 .. 2 ) { + $edge++ ; + $internal -= 2 ; + say " " x $edge . "^" . " " x $internal . "^" ; +} +$edge++ ; +say " " x $edge . "^" x 5 ; +$edge += 2 ; +for (1 .. 3 ) { + say " " x $edge . "^" ; +} +$edge -= 2 ; +say " " x $edge . ( "^" x 5 ) ; +$edge += 2 ; +for (1 .. 2 ) { + say " " x $edge . "^" ; +} diff --git a/challenge-124/ulrich-rieke/perl/ch-2.pl b/challenge-124/ulrich-rieke/perl/ch-2.pl new file mode 100644 index 0000000000..a6f82df546 --- /dev/null +++ b/challenge-124/ulrich-rieke/perl/ch-2.pl @@ -0,0 +1,63 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; +use Algorithm::Combinatorics qw ( combinations ) ; +use List::Util qw ( sum ) ; + +#finds the numbers not contained in a given combination +sub findComplement { + my $array = shift ; + my $numbers = shift ; + my %arraynumbers ; + map { $arraynumbers{ $_ }++ } @$array ; + my @complement = grep { not exists $arraynumbers{$_} } keys %{$numbers} ; + return @complement ; +} + +sub enterArray { + say "Enter numbers, separated by blanks" ; + my $line = <STDIN> ; + chomp $line ; + my @array = split( /\s+/ , $line ) ; + return @array ; +} + +my @array = enterArray( ) ; +my %numbers ;#stores all numbers entered in a hash to allow for complement finding +map { $numbers{$_}++ } @array ; +my @minimumPartitions ;#for the subsets with the smallest difference of sums +#found so far +my @set = keys %numbers ; +my $len = scalar @set ; +my $limit = int( $len / 2 ) ;#length of one subset +my $difference = 100000 ;#high starting value to enforce new assignment +my $iter = combinations( \@set , $limit ) ; +while ( my $c = $iter->next ) { + my @firstPart = @$c ; + my @secondPart = findComplement( \@firstPart , \%numbers ) ; + my $currentDifference = abs( (sum @firstPart) - (sum @secondPart ) ) ; + if ( $currentDifference < $difference ) { + @minimumPartitions = ( ) ;#delete all arrays found so far + push @minimumPartitions , \@firstPart , \@secondPart ;#insert new ones + $difference = $currentDifference ;#and update the difference + } +} +if ( $len % 2 == 1 ) {#same logic as above , but one subset is longer than the +#other + $iter = combinations( \@set , $limit + 1 ) ;#that leads to a new limit + while ( my $c = $iter->next ) { + my @firstPart = @$c ; + my @secondPart = findComplement( \@firstPart , \%numbers ) ; + my $currentDifference = abs( (sum @firstPart) - (sum @secondPart ) ) ; + if ( $currentDifference < $difference ) { + @minimumPartitions = ( ) ; + push @minimumPartitions , \@firstPart , \@secondPart ; + $difference = $currentDifference ; + } + } +} +print "Subset 1 = (" ; +say join( ', ' , sort { $a <=> $b } @{$minimumPartitions[0]} ) . ')' ; +print "Subset 2 = (" ; +say join( ', ' , sort { $a <=> $b } @{$minimumPartitions[1]} ) . ')' ; diff --git a/challenge-124/ulrich-rieke/raku/ch-2.raku b/challenge-124/ulrich-rieke/raku/ch-2.raku new file mode 100644 index 0000000000..1184f32b47 --- /dev/null +++ b/challenge-124/ulrich-rieke/raku/ch-2.raku @@ -0,0 +1,45 @@ +use v6 ; + +sub enterArray( ) { + say "Enter an array, items separated by blanks!" ; + my $line = $*IN.get ; + my @array = $line.split( /\s+/ ) ; + return @array ; +} + +#after creating a combination of n numbers we look for the rest +sub findComplement( $subarray, @numbers ) { + return (@numbers.Set (-) $subarray.Set).keys.Array ; +} + +my @numbers = enterArray( ) ; +my $len = @numbers.elems ; +my $limit = $len div 2 ;#the length of one subset +my @allCombinations ;#for the subsets with the smallest difference of sums +my $difference = 100000 ;#high start value to enforce assignment of new value +if ( $len %% 2 ) { + for @numbers.combinations( $limit ) -> $combi { + my @complement = findComplement( $combi, @numbers ) ; + my $diff = abs( @complement.sum - $combi.sum ) ; + if ( $diff < $difference ) { + @allCombinations = ( ) ;#create space for new combinations + @allCombinations.push( @complement , $combi ) ; + $difference = $diff ;#and assign smaller difference + } + } +} +else {#logic as above + for @numbers.combinations($limit ..$limit + 1) -> $combi { + my @complement = findComplement( $combi, @numbers ) ; + my $diff = abs( @complement.sum - $combi.sum ) ; + if ( $diff < $difference ) { + @allCombinations = ( ) ; + @allCombinations.push( @complement , $combi ) ; + $difference = $diff ; + } + } +} +say "Subset 1 = (" ~ @allCombinations[0].sort( {$^a <=> $^b} ).join( ', ') + ~ ")" ; +say "Subset 2 = (" ~ @allCombinations[1].sort( {$^a <=> $^b} ).join(', ') + ~ ")" ; diff --git a/stats/pwc-current.json b/stats/pwc-current.json index d8b778820b..9003ebfc32 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,20 +1,26 @@ { - "legend" : { - "enabled" : 0 + "subtitle" : { + "text" : "[Champions: 18] Last updated at 2021-08-07 00:05:31 GMT" }, "plotOptions" : { "series" : { "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 + "enabled" : 1, + "format" : "{point.y}" }, "borderWidth" : 0 } }, + "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/>" + }, + "legend" : { + "enabled" : 0 + }, "series" : [ { - "name" : "The Weekly Challenge - 124", - "colorByPoint" : 1, "data" : [ { "name" : "Bruce Gray", @@ -22,109 +28,108 @@ "drilldown" : "Bruce Gray" }, { + "name" : "Cheok-Yin Fung", "drilldown" : "Cheok-Yin Fung", - "y" : 1, - "name" : "Cheok-Yin Fung" + "y" : 1 }, { + "name" : "Dave Jacoby", "drilldown" : "Dave Jacoby", - "y" : 3, - "name" : "Dave Jacoby" + "y" : 3 }, { - "drilldown" : "E. Choroba", "name" : "E. Choroba", + "drilldown" : "E. Choroba", "y" : 2 }, { "name" : "Flavio Poletti", - "y" : 6, - "drilldown" : "Flavio Poletti" + "drilldown" : "Flavio Poletti", + "y" : 6 }, { "name" : "James Smith", - "y" : 3, - "drilldown" : "James Smith" + "drilldown" : "James Smith", + "y" : 3 }, { "y" : 2, - "name" : "Jorg Sommrey", - "drilldown" : "Jorg Sommrey" + "drilldown" : "Jorg Sommrey", + "name" : "Jorg Sommrey" }, { - "drilldown" : "kjetillll", + "name" : "kjetillll", "y" : 2, - "name" : "kjetillll" + "drilldown" : "kjetillll" }, { - "name" : "Luca Ferrari", "y" : 4, - "drilldown" : "Luca Ferrari" + "drilldown" : "Luca Ferrari", + "name" : "Luca Ferrari" }, { - "drilldown" : "Mark Anderson", "y" : 1, + "drilldown" : "Mark Anderson", "name" : "Mark Anderson" }, { "y" : 2, - "name" : "Niels van Dijke", - "drilldown" : "Niels van Dijke" + "drilldown" : "Niels van Dijke", + "name" : "Niels van Dijke" }, { - "drilldown" : "Peter Campbell Smith", "name" : "Peter Campbell Smith", + "drilldown" : "Peter Campbell Smith", "y" : 1 }, { + "drilldown" : "Roger Bell_West", "y" : 5, - "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West" + "name" : "Roger Bell_West" }, { + "y" : 2, "drilldown" : "Simon Green", - "name" : "Simon Green", - "y" : 2 + "name" : "Simon Green" }, { - "drilldown" : "Simon Proctor", "y" : 2, + "drilldown" : "Simon Proctor", "name" : "Simon Proctor" }, { "drilldown" : "Stuart Little", - "name" : "Stuart Little", - "y" : 4 + "y" : 4, + "name" : "Stuart Little" }, { - "name" : "W. Luis Mochan", "y" : 3, - "drilldown" : "W. Luis Mochan" + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke" + }, + { + "drilldown" : "W. Luis Mochan", + "y" : 3, + "name" : "W. Luis Mochan" } - ] + ], + "colorByPoint" : 1, + "name" : "The Weekly Challenge - 124" } ], - "xAxis" : { - "type" : "category" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, "title" : { "text" : "The Weekly Challenge - 124" }, - "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/>" + "xAxis" : { + "type" : "category" + }, + "chart" : { + "type" : "column" }, "drilldown" : { "series" : [ { "id" : "Bruce Gray", - "name" : "Bruce Gray", "data" : [ [ "Perl", @@ -134,19 +139,22 @@ "Raku", 2 ] - ] + ], + "name" : "Bruce Gray" }, { + "name" : "Cheok-Yin Fung", + "id" : "Cheok-Yin Fung", "data" : [ [ "Perl", 1 ] - ], - "name" : "Cheok-Yin Fung", - "id" : "Cheok-Yin Fung" + ] }, { + "name" : "Dave Jacoby", + "id" : "Dave Jacoby", "data" : [ [ "Perl", @@ -156,19 +164,17 @@ "Blog", 1 ] - ], - "name" : "Dave Jacoby", - "id" : "Dave Jacoby" + ] }, { + "id" : "E. Choroba", "data" : [ [ "Perl", 2 ] ], - "name" : "E. Choroba", - "id" : "E. Choroba" + "name" : "E. Choroba" }, { "id" : "Flavio Poletti", @@ -189,8 +195,8 @@ "name" : "Flavio Poletti" }, { - "id" : "James Smith", "name" : "James Smith", + "id" : "James Smith", "data" : [ [ "Perl", @@ -203,26 +209,27 @@ ] }, { + "name" : "Jorg Sommrey", "id" : "Jorg Sommrey", "data" : [ [ "Perl", 2 ] - ], - "name" : "Jorg Sommrey" + ] }, { + "name" : "kjetillll", "data" : [ [ "Perl", 2 ] ], - "name" : "kjetillll", "id" : "kjetillll" }, { + "name" : "Luca Ferrari", "data" : [ [ "Raku", @@ -233,7 +240,6 @@ 2 ] ], - "name" : "Luca Ferrari", "id" : "Luca Ferrari" }, { @@ -247,26 +253,27 @@ "id" : "Mark Anderson" }, { - "id" : "Niels van Dijke", "data" : [ [ "Perl", 2 ] ], + "id" : "Niels van Dijke", "name" : "Niels van Dijke" }, { + "id" : "Peter Campbell Smith", "data" : [ [ "Perl", 1 ] ], - "name" : "Peter Campbell Smith", - "id" : "Peter Campbell Smith" + "name" : "Peter Campbell Smith" }, { + "name" : "Roger Bell_West", "id" : "Roger Bell_West", "data" : [ [ @@ -281,8 +288,7 @@ "Blog", 1 ] - ], - "name" : "Roger Bell_West" + ] }, { "id" : "Simon Green", @@ -299,17 +305,16 @@ "name" : "Simon Green" }, { - "id" : "Simon Proctor", + "name" : "Simon Proctor", "data" : [ [ "Raku", 2 ] ], - "name" : "Simon Proctor" + "id" : "Simon Proctor" }, { - "name" : "Stuart Little", "data" : [ [ "Perl", @@ -320,10 +325,25 @@ 2 ] ], - "id" : "Stuart Little" + "id" : "Stuart Little", + "name" : "Stuart Little" + }, + { + "id" : "Ulrich Rieke", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 1 + ] + ], + "name" : "Ulrich Rieke" }, { - "id" : "W. Luis Mochan", + "name" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -334,14 +354,13 @@ 1 ] ], - "name" : "W. Luis Mochan" + "id" : "W. Luis Mochan" } ] }, - "chart" : { - "type" : "column" - }, - "subtitle" : { - "text" : "[Champions: 17] Last updated at 2021-08-06 23:44:09 GMT" + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 3bd682e924..5c755f77a4 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,15 +1,25 @@ { - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" + }, + "subtitle" : { + "text" : "Last updated at 2021-08-07 00:05:31 GMT" + }, + "chart" : { + "type" : "column" + }, + "yAxis" : { + "min" : 0, + "title" : { + "text" : null } }, + "legend" : { + "enabled" : "false" + }, "series" : [ { + "name" : "Contributions", "data" : [ [ "Blog", @@ -17,47 +27,37 @@ ], [ "Perl", - 5937 + 5939 ], [ "Raku", - 3698 + 3699 ] ], - "name" : "Contributions", "dataLabels" : { + "rotation" : -90, + "color" : "#FFFFFF", + "y" : 10, "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" }, "enabled" : "true", - "align" : "right", - "rotation" : -90, - "color" : "#FFFFFF", "format" : "{point.y:.0f}", - "y" : 10 + "align" : "right" } } ], - "yAxis" : { - "min" : 0, - "title" : { - "text" : null - } - }, - "legend" : { - "enabled" : "false" - }, - "subtitle" : { - "text" : "Last updated at 2021-08-06 23:44:09 GMT" - }, - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" - }, - "chart" : { - "type" : "column" - }, "title" : { "text" : "The Weekly Challenge Contributions [2019 - 2021]" + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + } } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 8edd19721f..29472f5b51 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,9 +1,8 @@ { - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2021-08-06 23:44:09 GMT" - }, - "chart" : { - "type" : "column" + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } }, "drilldown" : { "series" : [ @@ -22,8 +21,8 @@ 11 ] ], - "name" : "001", - "id" : "001" + "id" : "001", + "name" : "001" }, { "name" : "002", @@ -44,6 +43,7 @@ "id" : "002" }, { + "name" : "003", "id" : "003", "data" : [ [ @@ -58,12 +58,9 @@ "Blog", 9 ] - ], - "name" : "003" + ] }, { - "id" : "004", - "name" : "004", "data" : [ [ "Perl", @@ -77,7 +74,9 @@ "Blog", 10 ] - ] + ], + "id" : "004", + "name" : "004" }, { "id" : "005", @@ -98,7 +97,6 @@ "name" : "005" }, { - "id" : "006", "name" : "006", "data" : [ [ @@ -113,7 +111,8 @@ "Blog", 7 ] - ] + ], + "id" : "006" }, { "id" : "007", @@ -134,7 +133,7 @@ "name" : "007" }, { - "id" : "008", + "name" : "008", "data" : [ [ "Perl", @@ -149,10 +148,9 @@ 12 ] ], - "name" : "008" + "id" : "008" }, { - "id" : "009", "data" : [ [ "Perl", @@ -167,6 +165,7 @@ 13 ] ], + "id" : "009", "name" : "009" }, { @@ -184,11 +183,11 @@ 11 ] ], - "name" : "010", - "id" : "010" + "id" : "010", + "name" : "010" }, { - "name" : "011", + "id" : "011", "data" : [ [ "Perl", @@ -203,9 +202,10 @@ 10 ] ], - "id" : "011" + "name" : "011" }, { + "name" : "012", "data" : [ [ "Perl", @@ -220,11 +220,9 @@ 11 ] ], - "name" : "012", "id" : "012" }, { - "id" : "013", "data" : [ [ "Perl", @@ -239,10 +237,10 @@ 13 ] ], + "id" : "013", "name" : "013" }, { - "id" : "014", "data" : [ [ "Perl", @@ -257,10 +255,11 @@ 15 ] ], + "id" : "014", "name" : "014" }, { - "id" : "015", + "name" : "015", "data" : [ [ "Perl", @@ -275,10 +274,11 @@ 15 ] ], - "name" : "015" + "id" : "015" }, { "name" : "016", + "id" : "016", "data" : [ [ "Perl", @@ -292,10 +292,11 @@ "Blog", 12 ] - ], - "id" : "016" + ] }, { + "name" : "017", + "id" : "017", "data" : [ [ "Perl", @@ -309,9 +310,7 @@ "Blog", 12 ] - ], - "name" : "017", - "id" : "017" + ] }, { "id" : "018", @@ -333,6 +332,7 @@ }, { "name" : "019", + "id" : "019", "data" : [ [ "Perl", @@ -346,10 +346,11 @@ "Blog", 13 ] - ], - "id" : "019" + ] }, { + "name" : "020", + "id" : "020", "data" : [ [ "Perl", @@ -363,9 +364,7 @@ "Blog", 13 ] - ], - "name" : "020", - "id" : "020" + ] }, { "data" : [ @@ -382,10 +381,11 @@ 10 ] ], - "name" : "021", - "id" : "021" + "id" : "021", + "name" : "021" }, { + "name" : "022", "data" : [ [ "Perl", @@ -400,12 +400,10 @@ 10 ] ], - "name" : "022", "id" : "022" }, { "id" : "023", - "name" : "023", "data" : [ [ "Perl", @@ -419,9 +417,11 @@ "Blog", 12 ] - ] + ], + "name" : "023" }, { + "name" : "024", "data" : [ [ "Perl", @@ -436,11 +436,9 @@ 11 ] ], - "name" : "024", "id" : "024" }, { - "id" : "025", "data" : [ [ "Perl", @@ -455,6 +453,7 @@ 12 ] ], + "id" : "025", "name" : "025" }, { @@ -494,7 +493,6 @@ "id" : "027" }, { - "name" : "028", "data" : [ [ "Perl", @@ -509,9 +507,11 @@ 9 ] ], - "id" : "028" + "id" : "028", + "name" : "028" }, { + "name" : "029", "data" : [ [ "Perl", @@ -526,11 +526,11 @@ 12 ] ], - "name" : "029", "id" : "029" }, { "name" : "030", + "id" : "030", "data" : [ [ "Perl", @@ -544,11 +544,9 @@ "Blog", 10 ] - ], - "id" : "030" + ] }, { - "id" : "031", "data" : [ [ "Perl", @@ -563,10 +561,11 @@ 9 ] ], + "id" : "031", "name" : "031" }, { - "id" : "032", + "name" : "032", "data" : [ [ "Perl", @@ -581,7 +580,7 @@ 10 ] ], - "name" : "032" + "id" : "032" }, { "data" : [ @@ -598,10 +597,11 @@ 10 ] ], - "name" : "033", - "id" : "033" + "id" : "033", + "name" : "033" }, { + "name" : "034", "data" : [ [ "Perl", @@ -616,10 +616,11 @@ 11 ] ], - "name" : "034", "id" : "034" }, { + "name" : "035", + "id" : "035", "data" : [ [ "Perl", @@ -633,13 +634,9 @@ "Blog", 9 ] - ], - "name" : "035", - "id" : "035" + ] }, { - "id" : "036", - "name" : "036", "data" : [ [ "Perl", @@ -653,9 +650,13 @@ "Blog", 11 ] - ] + ], + "id" : "036", |
