diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-07-26 00:42:23 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-07-26 00:42:23 +0100 |
| commit | d2aa2ab951a00427037aaf214b0e20e0d41a8b28 (patch) | |
| tree | 4444aa81b451175619bc032a00da44e6680abc52 | |
| parent | f19c2f42b365f075263b421a82a330001c92df43 (diff) | |
| download | perlweeklychallenge-club-d2aa2ab951a00427037aaf214b0e20e0d41a8b28.tar.gz perlweeklychallenge-club-d2aa2ab951a00427037aaf214b0e20e0d41a8b28.tar.bz2 perlweeklychallenge-club-d2aa2ab951a00427037aaf214b0e20e0d41a8b28.zip | |
- Added solutions by Robert DiCicco.
- Added solutions by Mark Anderson.
- Added solutions by Andrew Shitov.
- Added solutions by Simon Proctor.
- Added solutions by Luca Ferrari.
- Added solutions by David Ferrone.
- Added solutions by Thomas Kohler.
- Added solutions by Robbie Hatley.
- Added solutions by Ali Moradi.
- Added solutions by W. Luis Mochan.
- Added solutions by E. Choroba.
- Added solutions by Roger Bell_West.
- Added solutions by Peter Campbell Smith.
25 files changed, 3543 insertions, 2748 deletions
diff --git a/challenge-227/eric-cheung/python/ch-1.py b/challenge-227/eric-cheung/python/ch-1.py new file mode 100755 index 0000000000..1286f37671 --- /dev/null +++ b/challenge-227/eric-cheung/python/ch-1.py @@ -0,0 +1,13 @@ +
+from datetime import datetime
+
+nYearGiven = 2023 ## Example
+
+nFri_13th_Count = len([nMonthLoop + 1 for nMonthLoop in range(12) if int(datetime(nYearGiven, nMonthLoop + 1, 13).strftime("%w")) == 5])
+
+## for nMonthLoop in range(12):
+ ## strWeekDay = datetime(nYearGiven, nMonthLoop + 1, 13).strftime("%w")
+ ## if int(strWeekDay) == 5:
+ ## nFri_13th_Count = nFri_13th_Count + 1
+
+print (nFri_13th_Count)
diff --git a/challenge-227/eric-cheung/python/ch-2.py b/challenge-227/eric-cheung/python/ch-2.py new file mode 100755 index 0000000000..ce59ffaa51 --- /dev/null +++ b/challenge-227/eric-cheung/python/ch-2.py @@ -0,0 +1,53 @@ +
+import roman
+
+nMaxLimit = 3999
+
+def GetRomanArithOper (strInput):
+
+ global nMaxLimit
+
+ arrElem = strInput.split()
+ nInt_01 = roman.fromRoman(arrElem[0])
+ strOperator = arrElem[1]
+ nInt_02 = roman.fromRoman(arrElem[2])
+
+ if strOperator == "+":
+ if nInt_01 + nInt_02 > nMaxLimit:
+ return "non potest"
+ return roman.toRoman(nInt_01 + nInt_02)
+
+ if strOperator == "-":
+ if nInt_01 > nInt_02:
+ return roman.toRoman(nInt_01 - nInt_02)
+ if nInt_01 == nInt_02:
+ return "nulla"
+ return "non potest"
+
+ if strOperator == "/":
+ if nInt_01 % nInt_02 == 0:
+ return roman.toRoman(int(nInt_01 / nInt_02))
+ return "non potest"
+
+ if strOperator == "*":
+ if nInt_01 * nInt_02 > nMaxLimit:
+ return "non potest"
+ return roman.toRoman(nInt_01 * nInt_02)
+
+ if strOperator == "**":
+ if nInt_01 ** nInt_02 > nMaxLimit:
+ return "non potest"
+ return roman.toRoman(nInt_01 ** nInt_02)
+
+
+## strGivenExpr = "IV + V"
+## strGivenExpr = "M - I"
+## strGivenExpr = "X / II"
+## strGivenExpr = "XI * VI"
+## strGivenExpr = "VII ** III"
+## strGivenExpr = "V - V"
+## strGivenExpr = "V / II"
+## strGivenExpr = "MMM + M"
+strGivenExpr = "V - X"
+
+print (GetRomanArithOper(strGivenExpr))
diff --git a/challenge-227/robert-dicicco/julia/ch-1.jl b/challenge-227/robert-dicicco/julia/ch-1.jl new file mode 100644 index 0000000000..66374918fb --- /dev/null +++ b/challenge-227/robert-dicicco/julia/ch-1.jl @@ -0,0 +1,56 @@ +#!/usr/bin/env julia +#= +------------------------------------- +AUTHOR: Robert DiCicco +DATE : 2023-07-24 +Challenge 227 Task 1 Friday 13th ( Julia ) +------------------------------------- +=# +using Printf +using Dates + +function checkArgs(args) + global year + try + year = parse(Int64, args[1]) + catch + println("Please enter a year between 1753 and 9999") + exit(0) + finally + if year < 1753 || year > 9999 + println("Please enter a year between 1753 and 9999") + exit(0) + else + main(year) + end + end +end + +function main(year) + for month in 1:12 + d = Dates.Date(year,month,13) + wd = Dates.dayofweek(d) + if wd == 5 ### 5 is Friday + @printf("%d %d 13 is a Friday\n",year, month) + end + end +end + +checkArgs(ARGS) + +#= +------------------------------------- +SAMPLE OUTPUT +julia .\Friday13.jl 2023 + +2023 1 13 is a Friday +2023 10 13 is a Friday + +julia .\Friday13.jl 1753 + +1753 4 13 is a Friday +1753 7 13 is a Friday +------------------------------------- +=# + + diff --git a/challenge-227/robert-dicicco/perl/ch-1.pl b/challenge-227/robert-dicicco/perl/ch-1.pl new file mode 100644 index 0000000000..4bd275dc5c --- /dev/null +++ b/challenge-227/robert-dicicco/perl/ch-1.pl @@ -0,0 +1,44 @@ +#!/usr/bin/env perl +=begin comment +------------------------------------- +AUTHOR: Robert DiCicco +DATE : 2023-07-24 +Challenge 227 Task 1 Fridat 13th ( Perl ) +------------------------------------- +=cut +use v5.38; +use strict; +use warnings; +use Date::Calc qw/Day_of_Week/; + +if (($#ARGV == -1) or ($ARGV[0] < 1753 or $ARGV[0] > 9999)) { + say "Please supply a year between 1753 and 9999"; + exit; +} +my $year = $ARGV[0]; +my $month = 1; +my $day = 1; +while ($month <= 12){ + my $dow = Day_of_Week($year,$month,13); + if ($dow == 5) { + say "$year $month 13 : was a Friday"; + } + $month++; +} + +=begin comment +------------------------------------- +SAMPLE OUTPUT +perl .\Friday13.pl 2023 + +2023 1 13 : was a Friday +2023 10 13 : was a Friday + +perl .\Friday13.pl 1753 + +1753 4 13 : was a Friday +1753 7 13 : was a Friday +------------------------------------- +=cut + + diff --git a/challenge-227/robert-dicicco/perl/ch-2.pl b/challenge-227/robert-dicicco/perl/ch-2.pl new file mode 100644 index 0000000000..dd5d5f4ccc --- /dev/null +++ b/challenge-227/robert-dicicco/perl/ch-2.pl @@ -0,0 +1,94 @@ +#!/usr/bin/env perl +=begin comment +-------------------------------------- +AUTHOR: Robert DiCicco +DATE : 2023-07-25 +Challenge 227 Task 2 Roman Maths ( Perl ) +-------------------------------------- +=cut +use strict; +use warnings; +use v5.38; +use Math::Roman qw/tokens roman /; + +my $problem = $ARGV[0]; + +my @parts = split(" ",$problem); + +my $left = $parts[0]; +my $op = $parts[1]; +my $right = $parts[2]; +### added tokens for 4, 9, 40, 90, 400, and 900 +Math::Roman::tokens( qw(I 1 IV 4 V 5 IX 9 X 10 XL 40 L 50 XC 90 C 100 XD 400 D 500 CM 900 M 1000 )); + +my $lft = Math::Roman::roman($left); # convert ascii arg to roman numeral +$lft = $lft->as_number(); # and convert it to an arabic number for use in math +my $rt = Math::Roman::roman($right); +$rt = $rt->as_number(); + +if ($lft - $rt == 0) { + print("$left $op $right est nulla\n"); + exit; +} +if ($op eq '/' and ($lft % $rt) > 0 ) { + print("$left $op $right non potest\n"); + exit; +} +if ($lft + $rt > 3999) { + print("$left $op $right non potest\n"); + exit; +} +if ($op eq '-' and ($lft - $rt < 0)) { + print("$left $op $right non potest\n"); + exit; +} + +my $val = 0; +if ( $op eq '+') { + $val = roman($lft + $rt); +} elsif ( $op eq '-') { + $val = roman($lft - $rt); +} elsif ($op eq '/') { + $val = roman($lft / $rt); +} elsif ($op eq '*') { + $val = roman($lft * $rt); +} elsif ($op eq '**') { + $val = roman($lft ** $rt); +} + +print("$left $op $right => $val\n"); + +=begin comment +-------------------------------------- +SAMPLE OUTPUT +perl .\RomanMath.pl "IV + V" +IV + V => IX + +perl .\RomanMath.pl "M - I" +M - I => CMXCIX + +perl .\RomanMath.pl "X / II" +X / II => V + +perl .\RomanMath.pl "XI * VI" +XI * VI => LXVI + +perl .\RomanMath.pl "VII ** III" +VII ** III => CCCXLIII + +perl .\RomanMath.pl "V - V" +V - V est nulla + +perl .\RomanMath.pl "V / II" +V / II non potest + +perl .\RomanMath.pl "MMM + M" +MMM + M non potest + +perl .\RomanMath.pl "V - X" +V - X non potest +-------------------------------------- +=cut + + + diff --git a/challenge-227/robert-dicicco/python/ch-1.py b/challenge-227/robert-dicicco/python/ch-1.py new file mode 100644 index 0000000000..20c8ed326e --- /dev/null +++ b/challenge-227/robert-dicicco/python/ch-1.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +''' +------------------------------------- +AUTHOR: Robert DiCicco +DATE : 2023-07-24 +Challenge 227 Task 1 Friday 13th ( Python ) +------------------------------------- +''' + +from datetime import date +import sys + +n = len(sys.argv) +if n == 1: + print("Please select a year between 1753 and 9999") + sys.exit(0) + +year = int(sys.argv[1]) +if year < 1753 or year > 9999: + print("Please select a year between 1753 and 9999") + sys.exit(0) + +for month in range(1,12): + d = date(year, month, 13) + wd = d.weekday() + if wd == 4: # Monday = 0, Sunday = 6 + print(f"{year} {month} 13 is a Friday") + month += 1 + +''' +------------------------------------- +SAMPLE OUTPUT +python .\Friday13.py 2023 + +2023 1 13 is a Friday +2023 10 13 is a Friday + +python .\Friday13.py 1753 + +1753 4 13 is a Friday +1753 7 13 is a Friday +------------------------------------- +''' + + + + + + + + + diff --git a/challenge-227/robert-dicicco/raku/ch-1.raku b/challenge-227/robert-dicicco/raku/ch-1.raku new file mode 100644 index 0000000000..e2a9203bff --- /dev/null +++ b/challenge-227/robert-dicicco/raku/ch-1.raku @@ -0,0 +1,52 @@ +#!/usr/bin env raku +=begin comment +------------------------------------- +AUTHOR: Robert DiCicco +DATE : 2023-07-24 +Challenge 227 Task 1 Fridat 13th ( Raku ) +------------------------------------- +=end comment +use v6; + +my $year = 0; + +if @*ARGS == 0 { + say "Please supply a year between 1753 and 9999"; + exit(1); +} + +for @*ARGS -> $arg { + if (( $arg < 1753 ) || ( $arg > 9999 )) { + say "Please supply a year between 1753 and 9999"; + exit(1); + } + $year = $arg; +} + +my $month = 1; +while $month <= 12 { + my $d = Date.new($year, $month, 13); + if $d.day-of-week == 5 { + say "$year $month 13 : was a Friday"; + } + $month++; +} + +=begin comment +------------------------------------- +SAMPLE OUTPUT + +raku .\Friday13.rk 2023 + +2023 1 13 : was a Friday +2023 10 13 : was a Friday + +raku .\Friday13.rk 1753 + +1753 4 13 : was a Friday +1753 7 13 : was a Friday + +------------------------------------- +=end comment + + diff --git a/challenge-227/robert-dicicco/raku/ch-2.raku b/challenge-227/robert-dicicco/raku/ch-2.raku new file mode 100644 index 0000000000..d041c648d8 --- /dev/null +++ b/challenge-227/robert-dicicco/raku/ch-2.raku @@ -0,0 +1,88 @@ +#!/usr/bin/env raku +=begin comment +-------------------------------------- +AUTHOR: Robert DiCicco +DATE : 2023-07-25 +Challenge 227 Task 2 Roman Maths ( Raku ) +-------------------------------------- +=end comment +use v6; +use Math::Roman; + +my ($left,$right, $op); + +if @*ARGS == 0 { + say "Please enter a math problem using Roman numerals"; + exit(1); +} + +for @*ARGS -> $problem { + my @parts = $problem.split(" "); + $left = @parts[0]; + $op = @parts[1]; + $right = @parts[2]; +} + +my $lft = to-arabic($left); +my $rt = to-arabic($right); + +if ($lft - $rt == 0) { + print("$left $op $right est nulla\n"); + exit; +} elsif ($op eq '/' and ($lft % $rt) > 0 ) { + print("$left $op $right non potest\n"); + exit; +} elsif ($lft + $rt > 3999) { + print("$left $op $right non potest\n"); + exit; +} elsif ($op eq '-' and ($lft - $rt < 0)) { + print("$left $op $right non potest\n"); + exit; +} + +if ( $op eq '+') { + say "$left + $right => ",($lft + $rt)R; +} elsif ($op eq '-') { + say "$left - $right => ",($lft - $rt)R; +} elsif ($op eq '/') { + say "$left / $right => ",($lft div $rt)R; +} elsif ($op eq '*') { + say "$left * $right => ",($lft * $rt)R; +} elsif ($op eq '**') { + say "$left ** $right => ",($lft ** $rt)R; +} + +=begin comment +-------------------------------------- +SAMPLE OUTPUT +raku .\RomanMath.rk "IV + V" +IV + V => IX + +raku .\RomanMath.rk "M - I" +M - I => CMXCIX + +raku .\RomanMath.rk "X / II" +X / II => V + +raku .\RomanMath.rk "XI * VI" +XI * VI => LXVI + +raku .\RomanMath.rk "VII ** III" +VII ** III => CCCXLIII + +raku .\RomanMath.rk "V - V" +V - V est nulla + +raku .\RomanMath.rk "V / II" +V / II non potest + +raku .\RomanMath.rk "MMM + M" +MMM + M non potest + +raku .\RomanMath.rk "V - X" +V - X non potest +-------------------------------------- +=end comment + + + diff --git a/challenge-227/robert-dicicco/ruby/ch-1.rb b/challenge-227/robert-dicicco/ruby/ch-1.rb new file mode 100644 index 0000000000..d7e67cc998 --- /dev/null +++ b/challenge-227/robert-dicicco/ruby/ch-1.rb @@ -0,0 +1,41 @@ +#!/usr/bin/env ruby +=begin +------------------------------------- +AUTHOR: Robert DiCicco +DATE : 2023-07-24 +Challenge 227 Task 1 Fridat 13th ( Ruby ) +------------------------------------- +=end +require 'date' + +year = ARGV[0].to_i +if year < 1753 || year > 9999 + puts("Please supply a year between 1753 and 9999") + exit +end + +month = 1 +while month <= 12 + d = Date.new(year,month,13).wday + if d == 5 + puts("#{year} #{month} 13 is a Friday") + end + month += 1 +end + +=begin +------------------------------------- +SAMPLE OUTPUT +ruby .\Friday13.rb 2023 + +2023 1 13 is a Friday +2023 10 13 is a Friday + +ruby .\Friday13.rb 1753 + +1753 4 13 is a Friday +1753 7 13 is a Friday +------------------------------------- +=end + + diff --git a/stats/pwc-challenge-226.json b/stats/pwc-challenge-226.json new file mode 100644 index 0000000000..f91238b23a --- /dev/null +++ b/stats/pwc-challenge-226.json @@ -0,0 +1,684 @@ +{ + "xAxis" : { + "type" : "category" + }, + "subtitle" : { + "text" : "[Champions: 36] Last updated at 2023-07-25 23:36:03 GMT" + }, + "chart" : { + "type" : "column" + }, + "series" : [ + { + "name" : "The Weekly Challenge - 226", + "data" : [ + { + "name" : "Adam Russell", + "y" : 4, + "drilldown" : "Adam Russell" + }, + { + "drilldown" : "Adriaan Dens", + "y" : 2, + "name" : "Adriaan Dens" + }, + { + "name" : "Ali Moradi", + "y" : 4, + "drilldown" : "Ali Moradi" + }, + { + "drilldown" : "Andreas Voegele", + "name" : "Andreas Voegele", + "y" : 2 + }, + { + "y" : 3, + "name" : "Arne Sommer", + "drilldown" : "Arne Sommer" + }, + { + "name" : "Athanasius", + "y" : 4, + "drilldown" : "Athanasius" + }, + { + "drilldown" : "Avery Adams", + "y" : 1, + "name" : "Avery Adams" + }, + { + "y" : 4, + "name" : "BarrOff", + "drilldown" : "BarrOff" + }, + { + "y" : 3, + "name" : "Bob Lied", + "drilldown" : "Bob Lied" + }, + { + "drilldown" : "Bruce Gray", + "y" : 2, + "name" : "Bruce Gray" + }, + { + "y" : 2, + "name" : "Cheok-Yin Fung", + "drilldown" : "Cheok-Yin Fung" + }, + { + "drilldown" : "Dave Jacoby", + "name" : "Dave Jacoby", + "y" : 3 + }, + { + "drilldown" : "David Ferrone", + "y" : 2, + "name" : "David Ferrone" + }, + { + "drilldown" : "E. Choroba", + "name" : "E. Choroba", + "y" : 2 + }, + { + "drilldown" : "Flavio Poletti", + "name" : "Flavio Poletti", + "y" : 6 + }, + { + "name" : "Jaldhar H. Vyas", + "y" : 5, + "drilldown" : "Jaldhar H. Vyas" + }, + { + "drilldown" : "Jan Krnavek", + "name" : "Jan Krnavek", + "y" : 2 + }, + { + "drilldown" : "Jorg Sommrey", + "y" : 2, + "name" : "Jorg Sommrey" + }, + { + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", + "y" : 6 + }, + { + "drilldown" : "Lubos Kolouch", + "y" : 2, + "name" : "Lubos Kolouch" + }, + { + "name" : "Luca Ferrari", + "y" : 8, + "drilldown" : "Luca Ferrari" + }, + { + "drilldown" : "Mark Anderson", + "y" : 2, + "name" : "Mark Anderson" + }, + { + "drilldown" : "Matthew Neleigh", + "y" : 2, + "name" : "Matthew Neleigh" + }, + { + "drilldown" : "Niels van Dijke", + "name" : "Niels van Dijke", + "y" : 2 + }, + { + "drilldown" : "Packy Anderson", + "y" : 4, + "name" : "Packy Anderson" + }, + { + "drilldown" : "Peter Campbell Smith", + "name" : "Peter Campbell Smith", + "y" : 3 + }, + { + "name" : "PokGoPun", + "y" : 2, + "drilldown" : "PokGoPun" + }, + { + "drilldown" : "Robbie Hatley", + "name" : "Robbie Hatley", + "y" : 3 + }, + { + "drilldown" : "Robert DiCicco", + "y" : 4, + "name" : "Robert DiCicco" + }, + { + "drilldown" : "Robert Ransbottom", + "y" : 2, + "name" : "Robert Ransbottom" + }, + { + "name" : "Roger Bell_West", + "y" : 5, + "drilldown" : "Roger Bell_West" + }, + { + "drilldown" : "Simon Green", + "y" : 3, + "name" : "Simon Green" + }, + { + "y" : 2, + "name" : "Steven Wilson", + "drilldown" : "Steven Wilson" + }, + { + "name" : "Thomas Kohler", + "y" : 4, + "drilldown" : "Thomas Kohler" + }, + { + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke", + "y" : 4 + }, + { + "drilldown" : "W. Luis Mochan", + "name" : "W. Luis Mochan", + "y" : 3 + } + ], + "colorByPoint" : 1 + } + ], + "title" : { + "text" : "The Weekly Challenge - 226" + }, + "legend" : { + "enabled" : 0 + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "drilldown" : { + "series" : [ + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 2 + ] + ], + "id" : "Adam Russell", + "name" : "Adam Russell" + }, + { + "name" : "Adriaan Dens", + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Adriaan Dens" + }, + { + "name" : "Ali Moradi", + "id" : "Ali Moradi", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ] + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Andreas Voegele", + "name" : "Andreas Voegele" + }, + { + "name" : "Arne Sommer", + "data" : [ + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Arne Sommer" + }, + { + "name" : "Athanasius", + "id" : "Athanasius", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ] + }, + { + "name" : "Avery Adams", + "id" : "Avery Adams", + "data" : [ + [ + "Perl", + 1 + ] + ] + }, + { + "name" : "BarrOff", + "id" : "BarrOff", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ] + }, + { + "name" : "Bob Lied", + "id" : "Bob Lied", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ] + }, + { + "name" : "Bruce Gray", + "data" : [ + [ + "Raku", + 2 + ] + ], + "id" : "Bruce Gray" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Cheok-Yin Fung", + "name" : "Cheok-Yin Fung" + }, + { + "name" : "Dave Jacoby", + "id" : "Dave Jacoby", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ] + }, + { + "name" : "David Ferrone", + "id" : "David Ferrone", + "data" : [ + [ + "Perl", + 2 + ] + ] + }, + { + "name" : "E. Choroba", + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "E. Choroba" + }, + { + "name" : "Flavio Poletti", + "id" : "Flavio Poletti", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 2 + ] + ] + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Jaldhar H. Vyas", + "name" : "Jaldhar H. Vyas" + }, + { + "data" : [ + [ + "Raku", + 2 + ] + ], + "id" : "Jan Krnavek", + "name" : "Jan Krnavek" + }, + { + "id" : "Jorg Sommrey", + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "Jorg Sommrey" + }, + { + "name" : "Laurent Rosenfeld", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 2 + ] + ], + "id" : "Laurent Rosenfeld" + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "Lubos Kolouch", + "name" : "Lubos Kolouch" + }, + { + "name" : "Luca Ferrari", + "id" : "Luca Ferrari", |
