good chemistry is complicated,and a little bit messy -LW PerlMonks

### Re: Determining if I have a particular Friday off

by Not_a_Number (Parson)
 on Oct 25, 2012 at 19:50 UTC ( #1000925=note: print w/replies, xml ) Need Help??

There is a bug in your code.

You assume that every year has 52 weeks. In fact, some are deemed to have have 53:

Try this:

```D:\perl>junk.pl 2010 1 1
You DID have Fri 1-Jan-2010 off.

D:\perl>junk.pl 2010 1 8
You DID have Fri 8-Jan-2010 off.

Replies are listed 'Best First'.
Re^2: Determining if I have a particular Friday off
by thmsdrew (Scribe) on Nov 06, 2012 at 14:55 UTC

Hey, been busy lately but I finally addressed the problem you pointed out as follows:

```#!/usr/bin/perl

use strict;
use warnings;

use Date::Calc qw(check_date Add_Delta_Days Monday_of_Week Week_of_Yea
+r Compress Today Date_to_Text Weeks_in_Year);

if (check_date(@ARGV)) {
# If there are 52 weeks in the year, I have odd Fridays off.
# If there are 53, I have even Fridays off.
my \$mod = (Weeks_in_Year(\$ARGV[1]) eq 52) ? 2 : 1;
my @friday = Add_Delta_Days(Monday_of_Week(Week_of_Year(@ARGV)), 4
+);
my (\$week, \$year) = Week_of_Year(@friday);
my \$present = Compress(@friday) > Compress(Today());
printf "You %s have %s off.\n",
(\$present ? "DO" : "DID") . (\$week % \$mod ? "" : "N'T"),
Date_to_Text(@friday);
}
else {
print "Usage.\n";
}
```   my \$mod = (Weeks_in_Year(\$ARGV[1]) eq 52) ? 2 : 1;
...
(\$present ? "DO" : "DID") . (\$week % \$mod ? "" : "N'T")

Hmmm. When \$mod is 1, % is always zero - and you "DON'T/DIDN'T" have off.

Hmm yeah, I wasn't thinking. This is a weird case, I'll have to think more about it.

Create A New User
Node Status?
node history
Node Type: note [id://1000925]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2017-08-23 05:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Who is your favorite scientist and why?

Results (347 votes). Check out past polls.

Notices?