aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-06-16 23:27:14 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-06-16 23:27:14 +0100
commitc34d31db8cdeb99ce29c99ca62c02f06affc2792 (patch)
treef29940159fac1a941c77dfb4dcd77f5aee64ebe8
parent2683661c7e6ec63ea6bb3ff449014db68030cb01 (diff)
downloadperlweeklychallenge-club-c34d31db8cdeb99ce29c99ca62c02f06affc2792.tar.gz
perlweeklychallenge-club-c34d31db8cdeb99ce29c99ca62c02f06affc2792.tar.bz2
perlweeklychallenge-club-c34d31db8cdeb99ce29c99ca62c02f06affc2792.zip
- Added solutions by Ulrich Rieke.
-rw-r--r--challenge-065/ulrich-rieke/perl/ch-2.pl98
-rw-r--r--challenge-065/ulrich-rieke/raku/ch-1.p611
-rw-r--r--stats/pwc-current.json103
-rw-r--r--stats/pwc-language-breakdown-summary.json44
-rw-r--r--stats/pwc-language-breakdown.json466
-rw-r--r--stats/pwc-leaders.json366
-rw-r--r--stats/pwc-summary-1-30.json34
-rw-r--r--stats/pwc-summary-121-150.json102
-rw-r--r--stats/pwc-summary-151-180.json38
-rw-r--r--stats/pwc-summary-31-60.json108
-rw-r--r--stats/pwc-summary-61-90.json114
-rw-r--r--stats/pwc-summary-91-120.json88
-rw-r--r--stats/pwc-summary.json46
13 files changed, 873 insertions, 745 deletions
diff --git a/challenge-065/ulrich-rieke/perl/ch-2.pl b/challenge-065/ulrich-rieke/perl/ch-2.pl
new file mode 100644
index 0000000000..55375f72e5
--- /dev/null
+++ b/challenge-065/ulrich-rieke/perl/ch-2.pl
@@ -0,0 +1,98 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use Algorithm::Combinatorics qw ( subsets ) ;
+
+sub arraysum {
+ my $array = shift ;
+ my $sum = 0 ;
+ for my $i ( @{$array} ) {
+ $sum += $i ;
+ }
+ return $sum ;
+}
+
+#function is applied only to strings with a minimum length of 1
+#provides all possible letter combination with a minimum length of 2 for
+#a palindrome
+sub findAllLengthCombinations {
+ my $string = shift ;
+ my $len = length $string ;
+ my @lengths ;
+ my @combis ;
+ if ( $len > 1 ) {
+ @lengths = (1..$len) ;
+ my $iter = subsets ( \@lengths ) ;
+ while ( my $p = $iter->next ) {
+ if ( arraysum( $p ) <= $len ) {
+ push ( @combis , $p ) ;
+ }
+ }
+ }
+ return @combis ;
+}
+
+sub isPalindrome {
+ my $str = shift ;
+ my $reversed = join( '', reverse split( // , $str ) ) ;
+ return ( length $str > 1 && $str eq $reversed ) ;
+}
+
+#find substrings according to the length combinations provided by the
+#subsets of possible indices
+sub findSubstrings {
+ my $positions = shift ;
+ my $str = shift ;
+ my @substrings ;
+ my $currentpos = 0 ;
+ while (@{$positions}) {
+ my $posadvance = shift @{$positions} ;
+ if ( $posadvance != 0 ) {
+ push ( @substrings , substr( $str , $currentpos, $posadvance ) ) ;
+ $currentpos += $posadvance ;
+ }
+ }
+ return @substrings ;
+}
+
+my $string = $ARGV[0] ;
+my $len = length $string ;
+my @lengthcombis = findAllLengthCombinations( $string ) ;
+my @palindromicPartitions ;#contains all palindrome partitions with more than
+#1 word
+my %palindromeWords ; #counts all palindromic words found
+foreach my $combi ( @lengthcombis ) {
+ my @substrings = findSubstrings( $combi , $string ) ;
+ my @palindromes = grep { isPalindrome( $_) } @substrings ;
+ if ( @palindromes ) {
+ if ( scalar @palindromes == 1 ) {
+ $palindromeWords{ $palindromes[0] }++ ;
+ }
+ else {
+ push ( @palindromicPartitions , join( ',' , @palindromes ) ) ;
+ map {$palindromeWords{$_}++} @palindromes ;
+ }
+ }
+}
+my @letters = ('a'..'z') ;
+#if a palindromic substring occurs only once it is only taken account of if it
+#appears at the start of the string. Whenever there are 2 and more consecutive
+#palindromic substrings they are considered as a solution
+my @only_once = grep { $palindromeWords{$_} == 1 && index( $string , $_) == 0 }
+keys %palindromeWords ;
+my $solutions = scalar @only_once + scalar @palindromicPartitions ;
+if ( $solutions > 0 ) {
+ print "There are $solutions possible solutions.\n" ;
+ my $i = 0 ;
+ foreach my $solution ( @only_once ) {
+ print "$letters[ $i ]) $solution\n" ;
+ $i++ ;
+ }
+ foreach my $solution( @palindromicPartitions ) {
+ print "$letters[ $i ]) $solution\n" ;
+ $i++ ;
+ }
+}
+else {
+ print "-1\n" ;
+}
diff --git a/challenge-065/ulrich-rieke/raku/ch-1.p6 b/challenge-065/ulrich-rieke/raku/ch-1.p6
new file mode 100644
index 0000000000..129375c3da
--- /dev/null
+++ b/challenge-065/ulrich-rieke/raku/ch-1.p6
@@ -0,0 +1,11 @@
+use v6 ;
+
+sub digitSum( Int $n is copy ) {
+ return [+] $n.comb.map( {.Int} ) ;
+}
+
+sub MAIN( Int $N , Int $S ) {
+ my $lowest = ("1" ~ "0" x ( $N - 1 )).Int ;
+ my $highest = ("1" ~ "0" x $N).Int ;
+ .say for ($lowest...^$highest).grep( { digitSum( $_ ) == $S } ) ;
+}
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index 72d4a1e857..416816ffd5 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,69 +1,65 @@
{
+ "title" : {
+ "text" : "Perl Weekly Challenge - 065"
+ },
"xAxis" : {
"type" : "category"
},
- "plotOptions" : {
- "series" : {
- "borderWidth" : 0,
- "dataLabels" : {
- "format" : "{point.y}",
- "enabled" : 1
- }
- }
- },
"subtitle" : {
- "text" : "[Champions: 6] Last updated at 2020-06-16 11:40:39 GMT"
- },
- "yAxis" : {
- "title" : {
- "text" : "Total Solutions"
- }
+ "text" : "[Champions: 7] Last updated at 2020-06-16 22:26:48 GMT"
},
"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/>",
+ "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>",
"followPointer" : 1
},
- "title" : {
- "text" : "Perl Weekly Challenge - 065"
+ "yAxis" : {
+ "title" : {
+ "text" : "Total Solutions"
+ }
},
"chart" : {
"type" : "column"
},
"series" : [
{
- "colorByPoint" : 1,
"name" : "Perl Weekly Challenge - 065",
+ "colorByPoint" : 1,
"data" : [
{
- "name" : "Andrew Shitov",
+ "y" : 2,
"drilldown" : "Andrew Shitov",
- "y" : 2
+ "name" : "Andrew Shitov"
},
{
- "y" : 1,
"drilldown" : "Dave Jacoby",
+ "y" : 1,
"name" : "Dave Jacoby"
},
{
- "drilldown" : "Javier Luque",
"y" : 5,
+ "drilldown" : "Javier Luque",
"name" : "Javier Luque"
},
{
- "drilldown" : "Luca Ferrari",
"y" : 4,
+ "drilldown" : "Luca Ferrari",
"name" : "Luca Ferrari"
},
{
- "y" : 2,
+ "name" : "Roger Bell_West",
"drilldown" : "Roger Bell_West",
- "name" : "Roger Bell_West"
+ "y" : 2
+ },
+ {
+ "name" : "Ulrich Rieke",
+ "drilldown" : "Ulrich Rieke",
+ "y" : 2
},
{
- "name" : "Wanderdoc",
+ "drilldown" : "Wanderdoc",
"y" : 2,
- "drilldown" : "Wanderdoc"
+ "name" : "Wanderdoc"
}
]
}
@@ -71,7 +67,6 @@
"drilldown" : {
"series" : [
{
- "name" : "Andrew Shitov",
"data" : [
[
"Raku",
@@ -82,19 +77,22 @@
1
]
],
- "id" : "Andrew Shitov"
+ "id" : "Andrew Shitov",
+ "name" : "Andrew Shitov"
},
{
+ "id" : "Dave Jacoby",
+ "name" : "Dave Jacoby",
"data" : [
[
"Blog",
1
]
- ],
- "name" : "Dave Jacoby",
- "id" : "Dave Jacoby"
+ ]
},
{
+ "id" : "Javier Luque",
+ "name" : "Javier Luque",
"data" : [
[
"Perl",
@@ -108,11 +106,10 @@
"Blog",
1
]
- ],
- "name" : "Javier Luque",
- "id" : "Javier Luque"
+ ]
},
{
+ "name" : "Luca Ferrari",
"id" : "Luca Ferrari",
"data" : [
[
@@ -123,8 +120,21 @@
"Blog",
2
]
- ],
- "name" : "Luca Ferrari"
+ ]
+ },
+ {
+ "id" : "Roger Bell_West",
+ "name" : "Roger Bell_West",
+ "data" : [
+ [
+ "Perl",
+ 1
+ ],
+ [
+ "Raku",
+ 1
+ ]
+ ]
},
{
"data" : [
@@ -137,21 +147,30 @@
1
]
],
- "name" : "Roger Bell_West",
- "id" : "Roger Bell_West"
+ "name" : "Ulrich Rieke",
+ "id" : "Ulrich Rieke"
},
{
- "id" : "Wanderdoc",
"data" : [
[
"Perl",
2
]
],
- "name" : "Wanderdoc"
+ "name" : "Wanderdoc",
+ "id" : "Wanderdoc"
}
]
},
+ "plotOptions" : {
+ "series" : {
+ "dataLabels" : {
+ "format" : "{point.y}",
+ "enabled" : 1
+ },
+ "borderWidth" : 0
+ }
+ },
"legend" : {
"enabled" : 0
}
diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json
index 066ae5c55c..51c4bc02bc 100644
--- a/stats/pwc-language-breakdown-summary.json
+++ b/stats/pwc-language-breakdown-summary.json
@@ -2,9 +2,6 @@
"legend" : {
"enabled" : "false"
},
- "chart" : {
- "type" : "column"
- },
"series" : [
{
"data" : [
@@ -14,50 +11,53 @@
],
[
"Perl",
- 2680
+ 2681
],
[
"Raku",
- 1704
+ 1705
]
],
"name" : "Contributions",
"dataLabels" : {
- "enabled" : "true",
- "color" : "#FFFFFF",
- "style" : {
- "fontSize" : "13px",
- "fontFamily" : "Verdana, sans-serif"
- },
"y" : 10,
"rotation" : -90,
"align" : "right",
+ "color" : "#FFFFFF",
+ "enabled" : "true",
+ "style" : {
+ "fontFamily" : "Verdana, sans-serif",
+ "fontSize" : "13px"
+ },
"format" : "{point.y:.0f}"
}
}
],
- "title" : {
- "text" : "Perl Weekly Challenge Contributions [2019 - 2020]"
- },
- "tooltip" : {
- "pointFormat" : "<b>{point.y:.0f}</b>"
+ "chart" : {
+ "type" : "column"
},
"yAxis" : {
- "min" : 0,
"title" : {
"text" : null
- }
+ },
+ "min" : 0
+ },
+ "tooltip" : {
+ "pointFormat" : "<b>{point.y:.0f}</b>"
+ },
+ "subtitle" : {
+ "text" : "Last updated at 2020-06-16 22:26:48 GMT"
},
"xAxis" : {
- "type" : "category",
"labels" : {
"style" : {
"fontSize" : "13px",
"fontFamily" : "Verdana, sans-serif"
}
- }
+ },
+ "type" : "category"
},
- "subtitle" : {
- "text" : "Last updated at 2020-06-16 11:40:39 GMT"
+ "title" : {
+ "text" : "Perl Weekly Challenge Contributions [2019 - 2020]"
}
}
diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json
index c30cfb1991..986540c5fd 100644
--- a/stats/pwc-language-breakdown.json
+++ b/stats/pwc-language-breakdown.json
@@ -2,6 +2,15 @@
"legend" : {
"enabled" : "false"
},
+ "plotOptions" : {
+ "series" : {
+ "borderWidth" : 0,
+ "dataLabels" : {
+ "enabled" : 1,
+ "format" : "{point.y}"
+ }
+ }
+ },
"drilldown" : {
"series" : [
{
@@ -23,8 +32,8 @@
"id" : "001"
},
{
- "id" : "002",
"name" : "002",
+ "id" : "002",
"data" : [
[
"Perl",
@@ -41,8 +50,8 @@
]
},
{
- "id" : "003",
"name" : "003",
+ "id" : "003",
"data" : [
[
"Perl",
@@ -59,6 +68,7 @@
]
},
{
+ "name" : "004",
"id" : "004",
"data" : [
[
@@ -73,12 +83,9 @@
"Blog",
10
]
- ],
- "name" : "004"
+ ]
},
{
- "id" : "005",
- "name" : "005",
"data" : [
[
"Perl",
@@ -92,10 +99,11 @@
"Blog",
12
]
- ]
+ ],
+ "name" : "005",
+ "id" : "005"
},
{
- "name" : "006",
"data" : [
[
"Perl",
@@ -110,9 +118,11 @@
7
]
],
+ "name" : "006",
"id" : "006"
},
{
+ "name" : "007",
"id" : "007",
"data" : [
[
@@ -127,11 +137,9 @@
"Blog",
10
]
- ],
- "name" : "007"
+ ]
},
{
- "id" : "008",
"data" : [
[
"Perl",
@@ -146,9 +154,11 @@
12
]
],
- "name" : "008"
+ "name" : "008",
+ "id" : "008"
},
{
+ "id" : "009",
"name" : "009",
"data" : [
[
@@ -163,11 +173,9 @@
"Blog",
13
]
- ],
- "id" : "009"
+ ]
},
{
- "id" : "010",
"data" : [
[
"Perl",
@@ -182,9 +190,11 @@
11
]
],
- "name" : "010"
+ "name" : "010",
+ "id" : "010"
},
{
+ "id" : "011",
"name" : "011",
"data" : [
[
@@ -199,10 +209,10 @@
"Blog",
10
]
- ],
- "id" : "011"
+ ]
},
{
+ "name" : "012",
"id" : "012",
"data" : [
[
@@ -217,10 +227,11 @@
"Blog",
11
]
- ],
- "name" : "012"
+ ]
},
{
+ "id" : "013",
+ "name" : "013",
"data" : [
[
"Perl",
@@ -234,11 +245,11 @@
"Blog",
13
]
- ],
- "name" : "013",
- "id" : "013"
+ ]
},
{
+ "name" : "014",
+ "id" : "014",
"data" : [
[
"Perl",
@@ -252,11 +263,11 @@
"Blog",
15
]
- ],
- "name" : "014",
- "id" : "014"
+ ]
},
{
+ "name" : "015",
+ "id" : "015",
"data" : [
[
"Perl",
@@ -270,12 +281,9 @@
"Blog",
15
]
- ],
- "name" : "015",
- "id" : "015"
+ ]
},
{
- "name" : "016",
"data" : [
[
"Perl",
@@ -290,9 +298,11 @@
12
]
],
- "id" : "016"
+ "id" : "016",
+ "name" : "016"
},
{
+ "id" : "017",
"name" : "017",
"data" : [
[
@@ -307,10 +317,11 @@
"Blog",
12
]
- ],
- "id" : "017"
+ ]
},
{
+ "id" : "018",
+ "name" : "018",
"data" : [
[
"Perl",
@@ -324,12 +335,11 @@
"Blog",
14
]
- ],
- "name" : "018",
- "id" : "018"
+ ]
},
{
"name" : "019",
+ "id" : "019",
"data" : [
[
"Perl",
@@ -343,8 +353,7 @@
"Blog",
13
]
- ],
- "id" : "019"
+ ]
},
{
"data" : [
@@ -365,7 +374,6 @@
"id" : "020"
},
{
- "name" : "021",
"data" : [
[
"Perl",
@@ -380,10 +388,10 @@
10
]
],
+ "name" : "021",
"id" : "021"
},
{
- "name" : "022",
"data" : [
[
"Perl",
@@ -398,10 +406,10 @@
10
]
],
- "id" : "022"
+ "id" : "022",
+ "name" : "022"
},
{
- "id" : "023",
"data" : [
[
"Perl",
@@ -416,11 +424,10 @@
12
]
],
+ "id" : "023",
"name" : "023"
},
{
- "id" : "024",
- "name" : "024",
"data" : [
[
"Perl",
@@ -434,10 +441,11 @@
"Blog",
11
]
- ]
+ ],
+ "name" : "024",
+ "id" : "024"
},
{
- "name" : "025",
"data" : [
[
"Perl",
@@ -452,10 +460,12 @@
12
]
],
- "id" : "025"
+ "id" : "025",
+ "name" : "025"
},
{
"id" : "026",
+ "name" : "026",
"data" : [
[
"Perl",
@@ -469,8 +479,7 @@
"Blog",
10
]
- ],
- "name" : "026"
+ ]
},
{
"id" : "027",
@@ -491,8 +500,6 @@
]
},
{
- "id" : "028",
- "name" : "028",
"data" : [
[
"Perl",
@@ -506,7 +513,9 @@
"Blog",
9
]
- ]
+ ],
+ "id" : "028",
+ "name" : "028"
},
{
"data" : [
@@ -523,8 +532,8 @@
12
]
],
- "name" : "029",
- "id" : "029"
+ "id" : "029",
+ "name" : "029"
},
{
"id" : "030",
@@ -545,6 +554,7 @@
]
},
{
+ "name" : "031",
"id" : "031",
"data" : [
[
@@ -559,11 +569,9 @@
"Blog",
9
]
- ],
- "name" : "031"
+ ]
},
{
- "name" : "032",
"data" : [
[
"Perl",
@@ -578,9 +586,11 @@
10
]
],
- "id" : "032"
+ "id" : "032",
+ "name" : "032"
},
{
+ "name" : "033",
"id" : "033",
"data" : [
[
@@ -595,12 +605,9 @@
"Blog",
10
]
- ],
- "name" : "033"
+ ]
},
{
- "id" : "034",
- "name" : "034",
"data" : [
[
"Perl",
@@ -614,10 +621,13 @@
"Blog",
11
]
- ]
+ ],
+ "name" : "034",
+ "id" : "034"
},
{
"name" : "035",
+ "id" : "035",
"data" : [
[
"Perl",
@@ -631,11 +641,9 @@
"Blog",
9
]
- ],
- "id" : "035"
+ ]
},
{
- "id" : "036",
"data" : [
[
"Perl",
@@ -650,11 +658,12 @@
11
]
],
- "name" : "036"
+ "name" : "036",
+ "id" : "036"
},
{
- "id" : "037",
"name" : "037",
+ "id" : "037",
"data" : [
[
"Perl",
@@ -671,7 +680,6 @@
]
},
{
- "name" : "038",
"data" : [
[
"Perl",
@@ -686,9 +694,12 @@
12
]
],
+ "name" : "038",
"id" : "038"
},
{
+ "name" : "039",
+ "id" : "039",
"data" : [
[
"Perl",
@@ -702,11 +713,10 @@
"Blog",
12
]
- ],
- "name" : "039",
- "id" : "039"
+ ]
},
{
+ "name" : "040",
"id" : "040",
"data" : [
[
@@ -721,11 +731,9 @@
"Blog",
10
]
- ],
- "name" : "040"
+ ]
},
{
- "name" : "041",
"data" : [
[
"Perl",
@@ -740,10 +748,10 @@
9
]
],
- "id" : "041"
+ "id" : "041",
+ "name" : "041"
},
{
- "id" : "042",
"data" : [
[
"Perl",
@@ -758,10 +766,10 @@
11
]
],
- "name" : "042"
+ "name" : "042",
+ "id" : "042"
},
{
- "name" : "043",
"data" : [
[
"Perl",
@@ -776,9 +784,11 @@
11
]
],
- "id" : "043"
+ "id" : "043",
+ "name" : "043"
},
{
+ "name" : "044",
"id" : "044",
"data" : [
[
@@ -793,11 +803,9 @@
"Blog",
11
]
- ],
- "name" : "044"
+ ]
},
{
- "id" : "045",
"data" : [
[
"Perl",
@@ -812,9 +820,12 @@
11
]
],
+ "id" : "045",
"name" : "045"
},
{
+ "name" : "046",
+ "id" : "046",
"data" : [
[
"Perl",
@@ -828,11 +839,11 @@
"Blog",
10
]
- ],
- "name" : "046",
- "id" : "046"
+ ]
},
{
+ "name" : "047",
+ "id" : "047",
"data" : [
[
"Perl",
@@ -846,11 +857,10 @@
"Blog",
10
]
- ],
- "name" : "047",
- "id" : "047"
+ ]
},
{
+ "id" : "048",
"name" : "048",
"data" : [
[
@@ -865,10 +875,10 @@
"Blog",
12
]
- ],
- "id" : "048"
+ ]
},
{
+ "id" : "049",
"name" : "049",
"data" : [
[
@@ -883,11 +893,11 @@
"Blog",
12
]
- ],
- "id" : "049"
+ ]
},
{
"id" : "050",
+ "name" : "050",
"data" : [
[
"Perl",
@@ -901,11 +911,11 @@
"Blog",
12
]
- ],
- "name" : "050"
+ ]
},
{
"name" : "051",
+ "id" : "051",
"data" : [
[
"Perl",
@@ -919,11 +929,9 @@
"Blog",
11
]
- ],
- "id" : "051"
+ ]
},
{
- "id" : "052",
"data" : [
[
"Perl",
@@ -938,11 +946,12 @@
14
]
],
- "name" : "052"
+ "name" : "052",
+ "id" : "052"
},
{
- "id" : "053",
"name" : "053",
+ "id" : "053",
"data" : [
[
"Perl",
@@ -959,6 +968,7 @@
]
},
{
+ "id" : "054",
"name" : "054",
"data" : [
[
@@ -973,10 +983,11 @@
"Blog",
16
]
- ],
- "id" : "054"
+ ]
},
{
+ "id" : "055",
+ "name" : "055",
"data" : [
[
"Perl",
@@ -990,13 +1001,11 @@
"Blog",
14
]
- ],
- "name" : "055",
- "id" : "055"
+ ]
},
{
- "id" : "056",
"name" : "056",
+ "id" : "056",
"data" : [
[
"Perl",
@@ -1013,7 +1022,6 @@
]
},
{
- "name" : "057",
"data" : [
[
"Perl",
@@ -1028,10 +1036,10 @@
15
]
],
- "id" : "057"
+ "id" : "057",
+ "name" : "057"
},
{
- "id" : "058",
"data" : [
[
"Perl",
@@ -1046,6 +1054,7 @@
11
]
],
+ "id" : "058",
"name" : "058"
},
{
@@ -