diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-06-16 23:27:14 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-06-16 23:27:14 +0100 |
| commit | c34d31db8cdeb99ce29c99ca62c02f06affc2792 (patch) | |
| tree | f29940159fac1a941c77dfb4dcd77f5aee64ebe8 | |
| parent | 2683661c7e6ec63ea6bb3ff449014db68030cb01 (diff) | |
| download | perlweeklychallenge-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.pl | 98 | ||||
| -rw-r--r-- | challenge-065/ulrich-rieke/raku/ch-1.p6 | 11 | ||||
| -rw-r--r-- | stats/pwc-current.json | 103 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 44 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 466 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 366 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 34 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 102 | ||||
| -rw-r--r-- | stats/pwc-summary-151-180.json | 38 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 108 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 114 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 88 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 46 |
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" }, { @@ - |
