diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-02-18 16:38:01 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-02-18 16:38:01 +0000 |
| commit | 0e2f0fd5cb537326b530defceca1be9b8995138f (patch) | |
| tree | 750e469774c0823810e1a0aef2e2fd8ea473bb5d | |
| parent | a17d8c1ad84fbdd4d42e6e9e846fcb24990791cc (diff) | |
| download | perlweeklychallenge-club-0e2f0fd5cb537326b530defceca1be9b8995138f.tar.gz perlweeklychallenge-club-0e2f0fd5cb537326b530defceca1be9b8995138f.tar.bz2 perlweeklychallenge-club-0e2f0fd5cb537326b530defceca1be9b8995138f.zip | |
- Added solutions by Duane Powell.
| -rwxr-xr-x | challenge-048/duane-powell/perl/ch-1.pl | 65 | ||||
| -rwxr-xr-x | challenge-048/duane-powell/perl/ch-2.pl | 61 | ||||
| -rw-r--r-- | stats/pwc-current.json | 255 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 54 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 698 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 336 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 36 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 30 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 116 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 102 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 20 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 336 |
12 files changed, 1125 insertions, 984 deletions
diff --git a/challenge-048/duane-powell/perl/ch-1.pl b/challenge-048/duane-powell/perl/ch-1.pl new file mode 100755 index 0000000000..1c8213b45e --- /dev/null +++ b/challenge-048/duane-powell/perl/ch-1.pl @@ -0,0 +1,65 @@ +#!/usr/bin/perl +use warnings; +use strict; +use feature 'say'; + +# Problem: https://perlweeklychallenge.org/blog/perl-weekly-challenge-048/ Task #1 + +my $SWORDSMAN = shift || 50; + +# These constants are not needed but it could be fun to add more weapons and rules +use constant { + KILL => undef, + NO_SWORD => 0, + SWORD => 1, +}; + +# Swordsman constructor +sub new_swordsman { + my $name = shift; + my $armed = shift; + return {name => $name, armed => $armed, next => undef}; +} + +# Create a set of swordsman and arrange them in a cirle +my $first_swordsman = new_swordsman(1, SWORD); +my $swordsman = $first_swordsman; +foreach my $s (2 .. $SWORDSMAN) { + my $next = new_swordsman($s, NO_SWORD); + # expand the circle and continue + $swordsman->{next} = $next; + $swordsman = $next; +} +# Complete the cirle by linking last swordsman to the first +$swordsman->{next} = $first_swordsman; + +# Execute man to your right and pass the sword until there is +# only one man standing, i.e. the next swordsman is yourself +$swordsman = $first_swordsman; +until ($swordsman->{next} == $swordsman) { + my $condemned = $swordsman->{next}; # ID the condemned + my $next = $condemned->{next}; # ID who gets the SWORD next + $condemned = KILL; # execute the condemned + $swordsman->{armed} = NO_SWORD; # pass the sword, not needed but fun to simulate + $next->{armed} = SWORD; + # contract the circle and continue + $swordsman->{next} = $next; + $swordsman = $next; +} + +say "$SWORDSMAN Swordsman arranged in a circle, the last man standing is Swordsman " . $swordsman->{name}; + +__END__ + +./ch-1.pl +50 Swordsman arranged in a circle, the last man standing is Swordsman 37 + +./ch-1.pl 3 +3 Swordsman arranged in a circle, the last man standing is Swordsman 3 + +./ch-1.pl 256 +256 Swordsman arranged in a circle, the last man standing is Swordsman 1 + +if we step thru different circle sizes we note that Swordsman 1 lives if the cirle +size is a power of 2: 1,2,4,8,16 ... 256 + diff --git a/challenge-048/duane-powell/perl/ch-2.pl b/challenge-048/duane-powell/perl/ch-2.pl new file mode 100755 index 0000000000..8a4d2a7033 --- /dev/null +++ b/challenge-048/duane-powell/perl/ch-2.pl @@ -0,0 +1,61 @@ +#!/usr/bin/perl +use warnings; +use strict; +use feature 'say'; +use DateTime; +use DateTime::Duration; + +# Problem: https://perlweeklychallenge.org/blog/perl-weekly-challenge-048/ Task #2 + +my $year_end = shift || 3000; + +my $dt = DateTime->new('year' => 2000, 'month' => 1, 'day' => 1); +my $day = DateTime::Duration->new('days' => 1); + +until ($dt->year == $year_end) { + my @pali = split('',$dt->mdy); + # @pali is a 10 element array MM-DD-YYYY + say $dt->mdy() if ($pali[0] == $pali[9] and $pali[1] == $pali[8] and $pali[3] == $pali[7] and $pali[4] == $pali[6]); + $dt->add( $day ); +} + +__END__ + +./ch-2.pl +10-02-2001 +01-02-2010 +11-02-2011 +02-02-2020 +12-02-2021 +03-02-2030 +04-02-2040 +05-02-2050 +06-02-2060 +07-02-2070 +08-02-2080 +09-02-2090 +10-12-2101 +01-12-2110 +11-12-2111 +02-12-2120 +12-12-2121 +03-12-2130 +04-12-2140 +05-12-2150 +06-12-2160 +07-12-2170 +08-12-2180 +09-12-2190 +10-22-2201 +01-22-2210 +11-22-2211 +02-22-2220 +12-22-2221 +03-22-2230 +04-22-2240 +05-22-2250 +06-22-2260 +07-22-2270 +08-22-2280 +09-22-2290 + diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 5f35af805c..6b1cdab2fd 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,41 +1,155 @@ { + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "title" : { + "text" : "Perl Weekly Challenge - 048" + }, + "xAxis" : { + "type" : "category" + }, + "subtitle" : { + "text" : "[Champions: 13] Last updated at 2020-02-18 16:37:44 GMT" + }, "chart" : { "type" : "column" }, + "legend" : { + "enabled" : 0 + }, + "series" : [ + { + "data" : [ + { + "y" : 2, + "drilldown" : "Dave Cross", + "name" : "Dave Cross" + }, + { + "name" : "Dave Jacoby", + "drilldown" : "Dave Jacoby", + "y" : 2 + }, + { + "y" : 2, + "name" : "Duane Powell", + "drilldown" : "Duane Powell" + }, + { + "y" : 2, + "name" : "E. Choroba", + "drilldown" : "E. Choroba" + }, + { + "y" : 5, + "name" : "Javier Luque", + "drilldown" : "Javier Luque" + }, + { + "drilldown" : "Luca Ferrari", + "name" : "Luca Ferrari", + "y" : 4 + }, + { + "y" : 2, + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson" + }, + { + "name" : "Markus Holzer", + "drilldown" : "Markus Holzer", + "y" : 2 + }, + { + "y" : 1, + "drilldown" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar" + }, + { + "y" : 1, + "name" : "Peter Scott", + "drilldown" : "Peter Scott" + }, + { + "y" : 4, + "drilldown" : "Roger Bell West", + "name" : "Roger Bell West" + }, + { + "y" : 3, + "drilldown" : "Simon Proctor", + "name" : "Simon Proctor" + }, + { + "name" : "Wanderdoc", + "drilldown" : "Wanderdoc", + "y" : 2 + } + ], + "name" : "Perl Weekly Challenge - 048", + "colorByPoint" : 1 + } + ], + "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" : { + "borderWidth" : 0, + "dataLabels" : { + "enabled" : 1, + "format" : "{point.y}" + } + } + }, "drilldown" : { "series" : [ { - "id" : "Dave Cross", "data" : [ [ "Perl", 2 ] ], - "name" : "Dave Cross" + "name" : "Dave Cross", + "id" : "Dave Cross" }, { + "id" : "Dave Jacoby", "name" : "Dave Jacoby", "data" : [ [ "Perl", 2 ] + ] + }, + { + "data" : [ + [ + "Perl", + 2 + ] ], - "id" : "Dave Jacoby" + "name" : "Duane Powell", + "id" : "Duane Powell" }, { - "name" : "E. Choroba", "data" : [ [ "Perl", 2 ] ], + "name" : "E. Choroba", "id" : "E. Choroba" }, { - "name" : "Javier Luque", + "id" : "Javier Luque", "data" : [ [ "Perl", @@ -50,10 +164,11 @@ 1 ] ], - "id" : "Javier Luque" + "name" : "Javier Luque" }, { "id" : "Luca Ferrari", + "name" : "Luca Ferrari", "data" : [ [ "Raku", @@ -63,51 +178,49 @@ "Blog", 2 ] - ], - "name" : "Luca Ferrari" + ] }, { "name" : "Mark Anderson", - "id" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Mark Anderson" }, { + "name" : "Markus Holzer", "data" : [ [ "Raku", 2 ] ], - "id" : "Markus Holzer", - "name" : "Markus Holzer" + "id" : "Markus Holzer" }, { - "name" : "Mohammad S Anwar", - "id" : "Mohammad S Anwar", "data" : [ [ "Perl", 1 ] - ] + ], + "name" : "Mohammad S Anwar", + "id" : "Mohammad S Anwar" }, { - "name" : "Peter Scott", "id" : "Peter Scott", "data" : [ [ "Perl", 1 ] - ] + ], + "name" : "Peter Scott" }, { - "name" : "Roger Bell West", "data" : [ [ "Perl", @@ -118,6 +231,7 @@ 2 ] ], + "name" : "Roger Bell West", "id" : "Roger Bell West" }, { @@ -131,118 +245,19 @@ 1 ] ], - "id" : "Simon Proctor", - "name" : "Simon Proctor" + "name" : "Simon Proctor", + "id" : "Simon Proctor" }, { - "name" : "Wanderdoc", "data" : [ [ "Perl", 2 ] ], + "name" : "Wanderdoc", "id" : "Wanderdoc" } ] - }, - "subtitle" : { - "text" : "[Champions: 12] Last updated at 2020-02-18 11:26:53 GMT" - }, - "xAxis" : { - "type" : "category" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "series" : [ - { - "name" : "Perl Weekly Challenge - 048", - "data" : [ - { - "drilldown" : "Dave Cross", - "name" : "Dave Cross", - "y" : 2 - }, - { - "y" : 2, - "name" : "Dave Jacoby", - "drilldown" : "Dave Jacoby" - }, - { - "name" : "E. Choroba", - "drilldown" : "E. Choroba", - "y" : 2 - }, - { - "name" : "Javier Luque", - "drilldown" : "Javier Luque", - "y" : 5 - }, - { - "name" : "Luca Ferrari", - "drilldown" : "Luca Ferrari", - "y" : 4 - }, - { - "drilldown" : "Mark Anderson", - "name" : "Mark Anderson", - "y" : 2 - }, - { - "y" : 2, - "drilldown" : "Markus Holzer", - "name" : "Markus Holzer" - }, - { - "y" : 1, - "drilldown" : "Mohammad S Anwar", - "name" : "Mohammad S Anwar" - }, - { - "y" : 1, - "drilldown" : "Peter Scott", - "name" : "Peter Scott" - }, - { - "y" : 4, - "drilldown" : "Roger Bell West", - "name" : "Roger Bell West" - }, - { - "name" : "Simon Proctor", - "drilldown" : "Simon Proctor", - "y" : 3 - }, - { - "y" : 2, - "drilldown" : "Wanderdoc", - "name" : "Wanderdoc" - } - ], - "colorByPoint" : 1 - } - ], - "legend" : { - "enabled" : 0 - }, - "title" : { - "text" : "Perl Weekly Challenge - 048" - }, - "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/>", - "followPointer" : 1 - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 51d0cda09d..a0b290556f 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,40 +1,24 @@ { - "subtitle" : { - "text" : "Last updated at 2020-02-18 11:26:53 GMT" - }, "xAxis" : { "labels" : { "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" } }, "type" : "category" }, - "chart" : { - "type" : "column" - }, - "title" : { - "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" + "subtitle" : { + "text" : "Last updated at 2020-02-18 16:37:44 GMT" }, "legend" : { "enabled" : "false" }, + "chart" : { + "type" : "column" + }, "series" : [ { - "name" : "Contributions", - "dataLabels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - }, - "rotation" : -90, - "color" : "#FFFFFF", - "enabled" : "true", - "align" : "right", - "y" : 10, - "format" : "{point.y:.0f}" - }, "data" : [ [ "Blog", @@ -42,22 +26,38 @@ ], [ "Perl", - 1960 + 1962 ], [ "Raku", 1202 ] - ] + ], + "name" : "Contributions", + "dataLabels" : { + "align" : "right", + "enabled" : "true", + "y" : 10, + "color" : "#FFFFFF", + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + }, + "format" : "{point.y:.0f}", + "rotation" : -90 + } } ], "tooltip" : { "pointFormat" : "<b>{point.y:.0f}</b>" }, "yAxis" : { + "min" : 0, "title" : { "text" : null - }, - "min" : 0 + } + }, + "title" : { + "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index a0fcc673de..99ee944b28 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,274 +1,17 @@ { - "legend" : { - "enabled" : "false" - }, - "title" : { - "text" : "Perl Weekly Challenge Language" - }, "plotOptions" : { "series" : { + "borderWidth" : 0, "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "series" : [ - { - "colorByPoint" : "true", - "data" : [ - { - "drilldown" : "001", - "name" : "#001", - "y" : 140 - }, - { - "drilldown" : "002", - "name" : "#002", - "y" : 109 - }, - { - "drilldown" : "003", - "name" : "#003", - "y" : 71 - }, - { - "name" : "#004", - "drilldown" : "004", - "y" : 91 - }, - { - "drilldown" : "005", - "name" : "#005", - "y" : 71 - }, - { - "drilldown" : "006", - "name" : "#006", - "y" : 48 - }, - { - "name" : "#007", - "drilldown" : "007", - "y" : 56 - }, - { - "drilldown" : "008", - "name" : "#008", - "y" : 70 - }, - { - "drilldown" : "009", - "name" : "#009", - "y" : 68 - }, - { - "drilldown" : "010", - "name" : "#010", - "y" : 60 - }, - { - "y" : 79, - "drilldown" : "011", - "name" : "#011" - }, - { - "drilldown" : "012", - "name" : "#012", - "y" : 83 - }, - { - "y" : 76, - "drilldown" : "013", - "name" : "#013" - }, - { - "y" : 96, - "name" : "#014", - "drilldown" : "014" - }, - { - "drilldown" : "015", - "name" : "#015", - "y" : 93 - }, - { - "y" : 66, - "drilldown" : "016", - "name" : "#016" - }, - { - "name" : "#017", - "drilldown" : "017", - "y" : 79 - }, - { - "y" : 76, - "name" : "#018", - "drilldown" : "018" - }, - { - "y" : 95, - "drilldown" : "019", - "name" : "#019" - }, - { - "y" : 95, - "drilldown" : "020", - "name" : "#020" - }, - { - "name" : "#021", - "drilldown" : "021", - "y" : 67 - }, - { - "y" : 63, - "drilldown" : "022", - "name" : "#022" - }, - { - "y" : 91, - "name" : "#023", - "drilldown" : "023" - }, - { - "y" : 70, - "name" : "#024", - "drilldown" : "024" - }, - { - "name" : "#025", - "drilldown" : "025", - "y" : 55 - }, - { - "drilldown" : "026", - "name" : "#026", - "y" : 70 - }, - { - "y" : 58, - "drilldown" : "027", - "name" : "#027" - }, - { - "y" : 78, - "drilldown" : "028", - "name" : "#028" - }, - { - "y" : 77, - "drilldown" : "029", - "name" : "#029" - }, - { - "name" : "#030", - "drilldown" : "030", - "y" : 115 - }, - { - "name" : "#031", - "drilldown" : "031", - "y" : 87 - }, - { - "y" : 92, - "drilldown" : "032", - "name" : "#032" - }, - { - "y" : 108, - "name" : "#033", - "drilldown" : "033" - }, - { - "y" : 60, - "name" : "#034", - "drilldown" : "034" - }, - { - "y" : 60, - "drilldown" : "035", - "name" : "#035" - }, - { - "y" : 61, - "name" : "#036", - "drilldown" : "036" - }, - { - "y" : 63, - "name" : "#037", - "drilldown" : "037" - }, - { - "y" : 60, - "drilldown" : "038", - "name" : "#038" - }, - { - "name" : "#039", - "drilldown" : "039", - "y" : 60 - }, - { - "drilldown" : "040", - "name" : "#040", - "y" : 66 - }, - { - "y" : 69, - "drilldown" : "041", - "name" : "#041" - }, - { - "name" : "#042", - "drilldown" : "042", - "y" : 88 - }, - { - "y" : 65, - "drilldown" : "043", - "name" : "#043" - }, - { - "y" : 81, - "name" : "#044", - "drilldown" : "044" - }, - { - "y" : 93, - "drilldown" : "045", - "name" : "#045" - }, - { - "drilldown" : "046", - "name" : "#046", - "y" : 82 - }, - { - "drilldown" : "047", - "name" : "#047", - "y" : 80 - }, - { - "y" : 30, - "drilldown" : "048", - "name" : "#048" - } - ], - "name" : "Perl Weekly Challenge Languages" + "format" : "{point.y}", + "enabled" : 1 + } } - ], - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2020-02-18 11:26:53 GMT" }, "drilldown" : { "series" : [ { - "id" : "001", + "name" : "001", "data" : [ [ "Perl", @@ -283,7 +26,7 @@ 11 ] ], - "name" : "001" + "id" : "001" }, { "data" : [ @@ -300,8 +43,8 @@ 10 ] ], - "id" : "002", - "name" : "002" + "name" : "002", + "id" : "002" }, { "name" : "003", @@ -322,8 +65,6 @@ "id" : "003" }, { - "name" : "004", - "id" : "004", "data" : [ [ "Perl", @@ -337,10 +78,12 @@ "Blog", 10 ] - ] + ], + "name" : "004", + "id" : "004" }, { - "name" : "005", + "id" : "005", "data" : [ [ "Perl", @@ -355,10 +98,11 @@ 12 ] ], - "id" : "005" + "name" : "005" }, { "id" : "006", + "name" : "006", "data" : [ [ "Perl", @@ -372,12 +116,9 @@ "Blog", 7 ] - ], - "name" : "006" + ] }, { - "name" : "007", - "id" : "007", "data" : [ [ "Perl", @@ -391,10 +132,11 @@ "Blog", 10 ] - ] + ], + "name" : "007", + "id" : "007" }, { - "id" : "008", "data" : [ [ "Perl", @@ -409,7 +151,8 @@ 12 ] ], - "name" : "008" + "name" : "008", + "id" : "008" }, { "id" : "009", @@ -430,7 +173,6 @@ "name" : "009" }, { - "name" : "010", "data" : [ [ "Perl", @@ -445,6 +187,7 @@ 11 ] ], + "name" : "010", "id" : "010" }, { @@ -466,8 +209,6 @@ "id" : "011" }, { - "name" : "012", - "id" : "012", "data" : [ [ "Perl", @@ -481,10 +222,12 @@ "Blog", 11 ] - ] + ], + "name" : "012", + "id" : "012" }, { - "name" : "013", + "id" : "013", "data" : [ [ "Perl", @@ -499,10 +242,9 @@ 13 ] ], - "id" : "013" + "name" : "013" }, { - "id" : "014", "data" : [ [ "Perl", @@ -517,11 +259,12 @@ 15 ] ], - "name" : "014" + "name" : "014", + "id" : "014" }, { - "name" : "015", "id" : "015", + "name" : "015", "data" : [ [ "Perl", @@ -538,7 +281,6 @@ ] }, { - "name" : "016", "id" : "016", "data" : [ [ @@ -553,10 +295,10 @@ "Blog", 12 ] - ] + ], + "name" : "016" }, { - "name" : "017", "id" : "017", "data" : [ [ @@ -571,7 +313,8 @@ "Blog", 12 ] - ] + ], + "name" : "017" }, { "name" : "018", @@ -592,6 +335,7 @@ "id" : "018" }, { + "id" : "019", "data" : [ [ "Perl", @@ -606,11 +350,10 @@ 13 ] ], - "id" : "019", "name" : "019" }, { - "name" : "020", + "id" : "020", "data" : [ [ "Perl", @@ -625,10 +368,10 @@ 13 ] ], - "id" : "020" + "name" : "020" }, { - "id" : "021", + "name" : "021", "data" : [ [ "Perl", @@ -643,10 +386,9 @@ 10 ] ], - "name" : "021" + "id" : "021" }, { - "name" : "022", "data" : [ [ "Perl", @@ -661,10 +403,11 @@ 10 ] ], + "name" : "022", "id" : "022" }, { - "name" : "023", + "id" : "023", "data" : [ [ "Perl", |
