aboutsummaryrefslogtreecommitdiff
path: root/challenge-175
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-07-25 20:21:43 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-07-25 20:21:43 +0100
commit642db25a441b301b4e507796c55bfef8a4170185 (patch)
tree6eab532b4bd3493b4a7e360a6b4967502d74b796 /challenge-175
parentb404d135069bfbdf4fca5c9ff38ee4c3306e2a20 (diff)
downloadperlweeklychallenge-club-642db25a441b301b4e507796c55bfef8a4170185.tar.gz
perlweeklychallenge-club-642db25a441b301b4e507796c55bfef8a4170185.tar.bz2
perlweeklychallenge-club-642db25a441b301b4e507796c55bfef8a4170185.zip
- Added solutions by Robert DiCicco.
Diffstat (limited to 'challenge-175')
-rw-r--r--challenge-175/robert-dicicco/perl/ch-1.pl63
-rw-r--r--challenge-175/robert-dicicco/raku/ch-1.raku39
-rw-r--r--challenge-175/robert-dicicco/ruby/ch-1.rb35
3 files changed, 137 insertions, 0 deletions
diff --git a/challenge-175/robert-dicicco/perl/ch-1.pl b/challenge-175/robert-dicicco/perl/ch-1.pl
new file mode 100644
index 0000000000..c50b107754
--- /dev/null
+++ b/challenge-175/robert-dicicco/perl/ch-1.pl
@@ -0,0 +1,63 @@
+#!perl.exe
+
+use strict;
+use warnings;
+use DateTime;
+
+# AUTHOR: Robert DiCicco
+# DATE: 2022-07-25
+# Challenge 175 Last Sunday ( Perl )
+
+my @molen = qw( 31 28 31 30 31 30 31 31 30 31 30 31);
+
+sub CreateDateTime { # create a Date object for year and month
+ my $y = shift;
+ my $m = shift;
+
+ my $dt = DateTime->last_day_of_month(year => $y, month => $m);
+
+ return $dt;
+}
+
+sub CheckLeapYear { # Adjust February if leap year
+ my $dt = shift;
+
+ if($dt->is_leap_year){
+
+ $molen[1] = 29;
+
+ }
+}
+
+sub GetLastSunday { # back up until we land on Sunday
+ my $dt = shift;
+
+ my $dow = $dt->day_of_week;
+
+ if($dow != 7 ){
+
+ $dt->subtract(days=>$dow);
+
+ }
+
+ return $dt;
+
+}
+
+my $count = 1;
+
+my $year = $ARGV[0];
+
+while( $count <= 12){
+
+ my $dt = CreateDateTime($year, $count);
+
+ CheckLeapYear($dt);
+
+ $dt = GetLastSunday($dt);
+
+ print($dt->ymd . "\n");
+
+ $count++;
+
+}
diff --git a/challenge-175/robert-dicicco/raku/ch-1.raku b/challenge-175/robert-dicicco/raku/ch-1.raku
new file mode 100644
index 0000000000..15454479c7
--- /dev/null
+++ b/challenge-175/robert-dicicco/raku/ch-1.raku
@@ -0,0 +1,39 @@
+use v6;
+
+# AUTHOR: Robert DiCicco
+# DATE: 2022-07-25
+# Challenge 175 Last Sunday ( Raku )
+
+sub CreateDateTime ( $y, $m ) { # create a Date object for year and month
+ my $dt = Date.new($y, $m, 1 );
+
+ return $dt;
+}
+
+sub GetLastSunday($dt) {
+ my $lastdt = $dt.last-date-in-month; # Get last date and its dow
+
+ my $dow = ($lastdt).day-of-week;
+
+ if $dow == 7 { # if not 7, back up until day = 0 (7)
+
+ print("$lastdt\n");
+
+ } else {
+
+ say Date.new($lastdt).earlier( ( year => 0, month => 0, day => $dow ) );
+
+ }
+
+}
+
+sub MAIN( Int $year = 2022) { # In no year entered, default to 2022
+
+ for (1..12) -> $m { # for each month
+
+ my $dt = CreateDateTime($year, $m);
+
+ GetLastSunday($dt);
+
+ }
+}
diff --git a/challenge-175/robert-dicicco/ruby/ch-1.rb b/challenge-175/robert-dicicco/ruby/ch-1.rb
new file mode 100644
index 0000000000..152cb1d287
--- /dev/null
+++ b/challenge-175/robert-dicicco/ruby/ch-1.rb
@@ -0,0 +1,35 @@
+#ruby.exe
+
+require 'date'
+
+# AUTHOR: Robert DiCiccco
+# DATE: 2022-07-25
+# Challenge 175 Last Sunday ( Ruby )
+
+def CreateDateObject( y, m)
+
+ td = Date.new(y,m,1).next_month.prev_day
+
+ return td
+
+end
+
+year = ARGV[0].to_i
+
+for m in 1..12 do
+
+ td = CreateDateObject(year,m)
+
+ wd = td.wday
+
+ if wd != 7
+
+ puts (td - wd).to_s
+
+ else
+
+ puts td
+
+ end
+
+end