diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-07-14 17:51:10 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-07-14 17:51:10 +0100 |
| commit | 6da64baa13e73f466f02cd550c67f5ae901e5710 (patch) | |
| tree | 919c1f45d8f68a1a16b945f9cad448607bb57ed6 | |
| parent | 889c2e03812848cfd50ac9fd9d8e80fea64d883c (diff) | |
| download | perlweeklychallenge-club-6da64baa13e73f466f02cd550c67f5ae901e5710.tar.gz perlweeklychallenge-club-6da64baa13e73f466f02cd550c67f5ae901e5710.tar.bz2 perlweeklychallenge-club-6da64baa13e73f466f02cd550c67f5ae901e5710.zip | |
- Added solutions by Ulrich Rieke.
| -rw-r--r-- | challenge-121/ulrich-rieke/perl/ch-1.pl | 64 | ||||
| -rw-r--r-- | challenge-121/ulrich-rieke/perl/ch-2.pl | 54 | ||||
| -rw-r--r-- | stats/pwc-current.json | 145 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 58 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 836 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 338 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 118 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 40 | ||||
| -rw-r--r-- | stats/pwc-summary-181-210.json | 98 | ||||
| -rw-r--r-- | stats/pwc-summary-211-240.json | 34 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 36 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 48 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 44 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 532 |
15 files changed, 1311 insertions, 1178 deletions
diff --git a/challenge-121/ulrich-rieke/perl/ch-1.pl b/challenge-121/ulrich-rieke/perl/ch-1.pl new file mode 100644 index 0000000000..c7536c9888 --- /dev/null +++ b/challenge-121/ulrich-rieke/perl/ch-1.pl @@ -0,0 +1,64 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; + +sub toBinaryString { + my $number = shift ; + my @bits ; + while ( $number != 0 ) { + unshift @bits , $number % 2 ; + $number = int ( $number / 2 ) ; + } + return join( '' , @bits ) ; +} + +sub fromBinaryString { + my $numberstring = shift ; + my $sum = 0 ; + my @reversed = reverse split( // , $numberstring ) ; + my $multiplier = 1 ; + for my $num ( @reversed ) { + $sum += $multiplier * $num ; + $multiplier *= 2 ; + } + return $sum ; +} + +my $m = $ARGV[ 0 ] ; +my $n = $ARGV[ 1 ] ; +if ( $m < 0 or $m > 255 ) { + die "first argument should be between and including 0 and 255!\n" ; +} +if ( $n < 1 or $n > 8 ) { + die "second argument should be between and including 1 and 8!\n" ; +} +my $numberstring = toBinaryString( $m ) ; +my $firstNibble ; +my $secondNibble ; +my $len = length $numberstring ; +if ( $len < 4 ) { + $firstNibble = "0" x 4 ; + $secondNibble = "0" x ( 4 - $len ) . $numberstring ; +} +if ( $len == 4 ) { + $secondNibble = $numberstring ; + $firstNibble = "0" x 4 ; +} +if ( $len > 4 and $len < 8 ) { + my $newString = "0" x ( 8 - $len ) . $numberstring ; + $firstNibble = substr( $newString , 0 , 4 ) ; + $secondNibble = substr( $newString , 4 ) ; +} +if ( $len == 8 ) { + $firstNibble = substr( $numberstring , 0 , 4 ) ; + $secondNibble = substr( $numberstring , 4 ) ; +} +my $binaryString = $firstNibble . $secondNibble ; +if ( substr( $binaryString , 8 - $n , 1 ) eq "0" ) { + substr( $binaryString , 8 - $n , 1 ) = "1" ; +} +else { + substr( $binaryString , 8 - $n , 1 ) = "0" ; +} +say fromBinaryString( $binaryString ) ; diff --git a/challenge-121/ulrich-rieke/perl/ch-2.pl b/challenge-121/ulrich-rieke/perl/ch-2.pl new file mode 100644 index 0000000000..73eec14ded --- /dev/null +++ b/challenge-121/ulrich-rieke/perl/ch-2.pl @@ -0,0 +1,54 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; +use List::Util qw ( sum ) ; + +#find a number in a row +sub findColumn { + my $array = shift ; + my $number = shift ; + my @row = @$array ; + my $column = 0 ; + while ( $row[ $column ] != $number ) { + $column++ ; + } + return $column ; +} + +#find the next city to visit ; it's the column with the smallest number +#next to 0 provided the city wasn't visited yet +sub findNextCity { + my $array = shift ; + my $placesSeen = shift ; + my @row = @$array ; + my %visited = %{$placesSeen} ; + my @sorted = sort { $a <=> $b } @row ; + my $i = 1 ; + my $column = findColumn( \@row , $sorted[ $i ] ) ; + while ( exists $visited{ $column } ) { + $i++ ; + $column = findColumn( \@row , $sorted[ $i ] ) ; + } + return $column ; +} + +my @matrix = ( [0, 5, 2, 7] , [5, 0, 5, 3] , [3, 1, 0, 6] , [4, 5, 4, 0] ) ; +my @tour ; +my $len = scalar @matrix ; +my %visited ; +my $startPlace = 0 ; +my $currentPlace = $startPlace ; +$visited{ $startPlace }++ ; +push @tour , 0 ; +while ( scalar ( keys %visited ) < $len ) { + my $column = findNextCity( $matrix[ $currentPlace ] , \%visited ) ; + push @tour , $matrix[ $currentPlace ][$column] ; + $currentPlace = $column ; + $visited{ $currentPlace }++ ; +} +#we must return to the start +push @tour , $matrix[ $currentPlace ][$startPlace] ; +my $length = sum ( @tour ) ; +say "length = $length" ; +say "tour = (" . join( ' ' , @tour ) . ")" ; diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 334cb0f62b..6299662740 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,24 +1,23 @@ { - "legend" : { - "enabled" : 0 + "xAxis" : { + "type" : "category" }, - "chart" : { - "type" : "column" + "title" : { + "text" : "The Weekly Challenge - 121" }, "drilldown" : { "series" : [ { + "id" : "Cheok-Yin Fung", "name" : "Cheok-Yin Fung", "data" : [ [ "Perl", 1 ] - ], - "id" : "Cheok-Yin Fung" + ] }, { - "name" : "Dave Jacoby", "data" : [ [ "Perl", @@ -29,20 +28,21 @@ 1 ] ], + "name" : "Dave Jacoby", "id" : "Dave Jacoby" }, { - "id" : "E. Choroba", "data" : [ [ "Perl", 2 ] ], - "name" : "E. Choroba" + "name" : "E. Choroba", + "id" : "E. Choroba" }, { - "name" : "James Smith", + "id" : "James Smith", "data" : [ [ "Perl", @@ -53,7 +53,7 @@ 1 ] ], - "id" : "James Smith" + "name" : "James Smith" }, { "id" : "Luca Ferrari", @@ -70,24 +70,24 @@ ] }, { + "id" : "Mark Anderson", "data" : [ [ "Raku", 2 ] ], - "name" : "Mark Anderson", - "id" : "Mark Anderson" + "name" : "Mark Anderson" }, { + "id" : "Niels van Dijke", + "name" : "Niels van Dijke", "data" : [ [ "Perl", 2 ] - ], - "name" : "Niels van Dijke", - "id" : "Niels van Dijke" + ] }, { "id" : "Roger Bell_West", @@ -109,15 +109,17 @@ }, { "id" : "Simon Proctor", - "name" : "Simon Proctor", "data" : [ [ "Raku", 1 ] - ] + ], + "name" : "Simon Proctor" }, { + "id" : "Stuart Little", + "name" : "Stuart Little", "data" : [ [ "Perl", @@ -127,9 +129,17 @@ "Raku", 2 ] + ] + }, + { + "name" : "Ulrich Rieke", + "data" : [ + [ + "Perl", + 2 + ] ], - "name" : "Stuart Little", - "id" : "Stuart Little" + "id" : "Ulrich Rieke" }, { "id" : "W. Luis Mochan", @@ -147,47 +157,23 @@ } ] }, - "xAxis" : { - "type" : "category" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } - }, - "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/>" - }, "subtitle" : { - "text" : "[Champions: 11] Last updated at 2021-07-14 10:35:35 GMT" - }, - "title" : { - "text" : "The Weekly Challenge - 121" - }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } + "text" : "[Champions: 12] Last updated at 2021-07-14 16:50:29 GMT" }, "series" : [ { + "colorByPoint" : 1, "name" : "The Weekly Challenge - 121", "data" : [ { - "name" : "Cheok-Yin Fung", "y" : 1, + "name" : "Cheok-Yin Fung", "drilldown" : "Cheok-Yin Fung" }, { + "drilldown" : "Dave Jacoby", "name" : "Dave Jacoby", - "y" : 3, - "drilldown" : "Dave Jacoby" + "y" : 3 }, { "y" : 2, @@ -195,24 +181,24 @@ "drilldown" : "E. Choroba" }, { - "y" : 3, "name" : "James Smith", - "drilldown" : "James Smith" + "drilldown" : "James Smith", + "y" : 3 }, { - "drilldown" : "Luca Ferrari", + "y" : 4, "name" : "Luca Ferrari", - "y" : 4 + "drilldown" : "Luca Ferrari" }, { + "drilldown" : "Mark Anderson", "name" : "Mark Anderson", - "y" : 2, - "drilldown" : "Mark Anderson" + "y" : 2 }, { - "name" : "Niels van Dijke", "y" : 2, - "drilldown" : "Niels van Dijke" + "drilldown" : "Niels van Dijke", + "name" : "Niels van Dijke" }, { "y" : 4, @@ -220,22 +206,51 @@ "drilldown" : "Roger Bell_West" }, { - "y" : 1, "name" : "Simon Proctor", - "drilldown" : "Simon Proctor" + "drilldown" : "Simon Proctor", + "y" : 1 }, { - "drilldown" : "Stuart Little", "y" : 4, + "drilldown" : "Stuart Little", "name" : "Stuart Little" }, { - "drilldown" : "W. Luis Mochan", + "y" : 2, + "name" : "Ulrich Rieke", + "drilldown" : "Ulrich Rieke" + }, + { "y" : 3, - "name" : "W. Luis Mochan" + "name" : "W. Luis Mochan", + "drilldown" : "W. Luis Mochan" } - ], - "colorByPoint" : 1 + ] + } + ], + "chart" : { + "type" : "column" + }, + "legend" : { + "enabled" : 0 + }, + "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/>" + }, + "plotOptions" : { + "series" : { + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + }, + "borderWidth" : 0 + } + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" } - ] + } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 18e76eef02..74edb47e3b 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,17 +1,35 @@ { + "subtitle" : { + "text" : "Last updated at 2021-07-14 16:50:29 GMT" + }, + "title" : { + "text" : "The Weekly Challenge Contributions [2019 - 2021]" + }, + "xAxis" : { + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + }, + "type" : "category" + }, + "chart" : { + "type" : "column" + }, "series" : [ { "dataLabels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + }, + "align" : "right", "enabled" : "true", - "rotation" : -90, - "y" : 10, - "format" : "{point.y:.0f}", "color" : "#FFFFFF", - "align" : "right", - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } + "format" : "{point.y:.0f}", + "rotation" : -90, + "y" : 10 }, "name" : "Contributions", "data" : [ @@ -21,7 +39,7 @@ ], [ "Perl", - 5763 + 5765 ], [ "Raku", @@ -30,34 +48,16 @@ ] } ], - "title" : { - "text" : "The Weekly Challenge Contributions [2019 - 2021]" - }, - "subtitle" : { - "text" : "Last updated at 2021-07-14 10:35:35 GMT" - }, "yAxis" : { - "min" : 0, "title" : { "text" : null - } - }, - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - } + }, + "min" : 0 }, "tooltip" : { "pointFormat" : "<b>{point.y:.0f}</b>" }, "legend" : { "enabled" : "false" - }, - "chart" : { - "type" : "column" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 4f67c1fc1b..8c0bd6cf8c 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,21 +1,11 @@ { - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } - }, "series" : [ { - "name" : "The Weekly Challenge Languages", "data" : [ { - "drilldown" : "001", + "y" : 161, "name" : "#001", - "y" : 161 + "drilldown" : "001" }, { "drilldown" : "002", @@ -23,69 +13,69 @@ "y" : 125 }, { - "drilldown" : "003", "y" : 81, + "drilldown" : "003", "name" : "#003" }, { - "name" : "#004", "y" : 99, + "name" : "#004", "drilldown" : "004" }, { - "drilldown" : "005", "name" : "#005", + "drilldown" : "005", "y" : 78 }, { "drilldown" : "006", - "y" : 58, - "name" : "#006" + "name" : "#006", + "y" : 58 }, { - "y" : 64, + "drilldown" : "007", "name" : "#007", - "drilldown" : "007" + "y" : 64 }, { "drilldown" : "008", - "y" : 78, - "name" : "#008" + "name" : "#008", + "y" : 78 }, { - "drilldown" : "009", "y" : 76, - "name" : "#009" + "name" : "#009", + "drilldown" : "009" }, { + "y" : 65, "drilldown" : "010", - "name" : "#010", - "y" : 65 + "name" : "#010" }, { - "drilldown" : "011", "y" : 85, - "name" : "#011" + "name" : "#011", + "drilldown" : "011" }, { + "y" : 89, "drilldown" : "012", - "name" : "#012", - "y" : 89 + "name" : "#012" }, { - "drilldown" : "013", + "y" : 85, "name" : "#013", - "y" : 85 + "drilldown" : "013" }, { + "y" : 101, "drilldown" : "014", - "name" : "#014", - "y" : 101 + "name" : "#014" }, { - "y" : 99, "name" : "#015", - "drilldown" : "015" + "drilldown" : "015", + "y" : 99 }, { "y" : 71, @@ -93,44 +83,44 @@ "drilldown" : "016" }, { - "drilldown" : "017", "name" : "#017", + "drilldown" : "017", "y" : 84 }, { - "name" : "#018", "y" : 81, + "name" : "#018", "drilldown" : "018" }, { + "name" : "#019", "drilldown" : "019", - "y" : 103, - "name" : "#019" + "y" : 103 }, { - "y" : 101, "name" : "#020", - "drilldown" : "020" + "drilldown" : "020", + "y" : 101 }, { - "y" : 72, "name" : "#021", - "drilldown" : "021" + "drilldown" : "021", + "y" : 72 }, { + "drilldown" : "022", "name" : "#022", - "y" : 68, - "drilldown" : "022" + "y" : 68 }, { - "name" : "#023", "y" : 97, + "name" : "#023", "drilldown" : "023" }, { - "y" : 74, + "drilldown" : "024", "name" : "#024", - "drilldown" : "024" + "y" : 74 }, { "y" : 59, @@ -138,8 +128,8 @@ "drilldown" : "025" }, { - "drilldown" : "026", "y" : 74, + "drilldown" : "026", "name" : "#026" }, { @@ -148,64 +138,64 @@ "y" : 60 }, { - "drilldown" : "028", + "y" : 80, "name" : "#028", - "y" : 80 + "drilldown" : "028" }, { "y" : 79, - "name" : "#029", - "drilldown" : "029" + "drilldown" : "029", + "name" : "#029" }, { - "drilldown" : "030", "y" : 117, + "drilldown" : "030", "name" : "#030" }, { - "drilldown" : "031", "y" : 89, + "drilldown" : "031", "name" : "#031" }, { - "y" : 94, "name" : "#032", - "drilldown" : "032" + "drilldown" : "032", + "y" : 94 }, { - "drilldown" : "033", "name" : "#033", + "drilldown" : "033", "y" : 110 }, { - "drilldown" : "034", + "y" : 64, "name" : "#034", - "y" : 64 + "drilldown" : "034" }, { - "drilldown" : "035", "y" : 64, - "name" : "#035" + "name" : "#035", + "drilldown" : "035" }, { + "y" : 68, "drilldown" : "036", - "name" : "#036", - "y" : 68 + "name" : "#036" }, { + "name" : "#037", "drilldown" : "037", - "y" : 67, - "name" : "#037" + "y" : 67 }, { "drilldown" : "038", - "y" : 68, - "name" : "#038" + "name" : "#038", + "y" : 68 }, { - "y" : 62, "name" : "#039", - "drilldown" : "039" + "drilldown" : "039", + "y" : 62 }, { "drilldown" : "040", @@ -214,13 +204,13 @@ }, { "y" : 76, - "name" : "#041", - "drilldown" : "041" + "drilldown" : "041", + "name" : "#041" }, { - "drilldown" : "042", "y" : 92, - "name" : "#042" + "name" : "#042", + "drilldown" : "042" }, { "y" : 68, @@ -228,88 +218,88 @@ "drilldown" : "043" }, { + "name" : "#044", "drilldown" : "044", - "y" : 85, - "name" : "#044" + "y" : 85 }, { "y" : 96, - "name" : "#045", - "drilldown" : "045" + "drilldown" : "045", + "name" : "#045" }, { + "drilldown" : "046", "name" : "#046", - "y" : 87, - "drilldown" : "046" + "y" : 87 }, { - "name" : "#047", "y" : 84, + "name" : "#047", "drilldown" : "047" }, { + "name" : "#048", "drilldown" : "048", - "y" : 108, - "name" : "#048" + "y" : 108 }, { "name" : "#049", - "y" : 89, - "drilldown" : "049" + "drilldown" : "049", + "y" : 89 }, { + "name" : "#050", "drilldown" : "050", - "y" : 98, - "name" : "#050" + "y" : 98 }, { "drilldown" : "051", - "y" : 89, - "name" : "#051" + "name" : "#051", + "y" : 89 }, { - "drilldown" : "052", "y" : 91, - "name" : "#052" + "name" : "#052", + "drilldown" : "052" }, { - "drilldown" : "053", "y" : 101, + "drilldown" : "053", "name" : "#053" }, { - "name" : "#054", "y" : 103, - "drilldown" : "054" + "drilldown" : "054", + "name" : "#054" }, { - "y" : 88, + "drilldown" : "055", "name" : "#055", - "drilldown" : "055" + "y" : 88 }, { - "name" : "#056", "y" : 95, - "drilldown" : "056" + "drilldown" : "056", + "name" : "#056" }, { - "name" : "#057", "y" : 80, + "name" : "#057", "drilldown" : "057" }, { "y" : 69, - "name" : "#058", - "drilldown" : "058" + "drilldown" : "058", + "name" : "#058" }, { - "drilldown" : "059", "name" : "#059", + "drilldown" : "059", "y" : 89 }, { - "name" : "#060", "y" : 85, + "name" : "#060", "drilldown" : "060" }, { @@ -319,28 +309,28 @@ }, { "drilldown" : "062", - "y" : 58, - "name" : "#062" + "name" : "#062", + "y" : 58 }, { - "y" : 89, + "drilldown" : "063", "name" : "#063", - "drilldown" : "063" + "y" : 89 }, { "drilldown" : "064", - "y" : 80, - "name" : "#064" + "name" : "#064", + "y" : 80 }, { + "y" : 73, "drilldown" : "065", - "name" : "#065", - "y" : 73 + "name" : "#065" }, { + "name" : "#066", "drilldown" : "066", - "y" : 84, - "name" : "#066" + "y" : 84 }, { "drilldown" : "067", @@ -348,159 +338,159 @@ "y" : 90 }, { - "y" : 75, "name" : "#068", - "drilldown" : "068" + "drilldown" : "068", + "y" : 75 }, { - "name" : "#069", "y" : 83, + "name" : "#069", "drilldown" : "069" }, { - "name" : "#070", "y" : 93, + "name" : "#070", "drilldown" : "070" }, { - "drilldown" : "071", "y" : 78, - "name" : "#071" + "name" : "#071", + "drilldown" : "071" }, { - "y" : 112, "name" : "#072", - "drilldown" : "072" + "drilldown" : "072", + "y" : 112 }, { "name" : "#073", - "y" : 110, - "drilldown" : "073" + "drilldown" : "073", + "y" : 110 }, { - "drilldown" : "074", + "y" : 115, "name" : "#074", - "y" : 115 + "drilldown" : "074" }, { - "name" : "#075", "y" : 115, + "name" : "#075", "drilldown" : "075" }, { - "drilldown" : "076", "y" : 99, - "name" : "#076" + "name" : "#076", + "drilldown" : "076" }, { - "y" : 98, "name" : "#077", - "drilldown" : "077" + "drilldown" : "077", + "y" : 98 }, { "y" : 127, - "name" : "#078", - "drilldown" : "078" + "drilldown" : "078", + "name" : "#078" }, { + "name" : "#079", "drilldown" : "079", - "y" : 122, - "name" : "#079" + "y" : 122 }, { - "drilldown" : "080", "y" : 127, - "name" : "#080" + "name" : "#080", + "drilldown" : "080" }, { + "name" : "#081", "drilldown" : "081", - "y" : 114, - "name" : "#081" + "y" : 114 }, { "y" : 114, - "name" : "#082", - "drilldown" : "082" + "drilldown" : "082", + "name" : "#082" }, { - "drilldown" : "083", "y" : 127, - "name" : "#083" + "name" : " |
