[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Only one Friday 13th coming in 2016
From: |
Ken Irving |
Subject: |
Re: Only one Friday 13th coming in 2016 |
Date: |
Tue, 22 Dec 2015 10:59:18 -0900 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Tue, Dec 22, 2015 at 04:04:16AM +0100, Ángel González wrote:
> Bill Duncan wrote:
> > Remember that while there are 14 patterns of years, leap years don't
> > impact Friday the 13th for January/February..
> >
> > This isn't an exhaustive analysis, but a quick check for 300 years
> > didn't show any years without a Friday 13th..
> >
> > ;-)
> >
> > $ for y in {1900..2199} ; do for m in {1..12};do cal $m $y|awk
> > 'FNR==1{m=$0}/^ 1/{print m}';done;done | awk '{y[$2]++} END {for
> > (i=1900;i<2200;i++) if (!(i in y)) print i}'
> > $
>
>
> Aren't you making things more complex than needed, with so much pipes
> and awk?
>
> date(1) is your friend:
>
> For instance:
> $ for y in {1900..2199} ; do echo -n "$y "; for m in {1..12}; do date +%A -d
> $y-$m-13; done | grep -c Friday ; done
>
> shows there are between 1 and 3 Fridays per year.
>
>
> Or a mere listing:
> $ for y in {1900..2199} ; do for m in {1..12}; do date +%A -d $y-$m-13;
> done; done | sort | uniq -c | sort -rn
>
> That the most common weekday in these three centuries for the 13th is??? you
> guessed it, Friday.
Can't resist... cal(1)'s ncal option/version puts all Fridays on a line, so...
$ for y in {1900..2199}; do ncal $y | grep ^Fr | tr \ \\n |
grep 13 | wc -l; done | sort | uniq -c
128 1
128 2
44 3
and using the full range of cal(1) years:
$ time for y in {1..9999}; do ncal $y | grep ^Fr | tr \ \\n |
grep 13 | wc -l; done | sort | uniq -c
4274 1
4258 2
1467 3
real 0m52.301s
user 0m33.116s
sys 0m11.816s
and one more pass to count 'Friday the 13th' per month, but I guess
there can only be 0 or 1 anyway, so probably not very interesting:
$ time for m in {1..12}; do echo m=$m; for ((y=1; y<9999+1; y+=1)); \
do ncal $m $y| grep ^Fr | tr \ \\n | grep 13 | wc -l; done |
sort | uniq -c; done
m=1
8552 0
1447 1
m=2
8574 0
1425 1
m=3
8552 0
1447 1
...
m=11
8553 0
1446 1
m=12
8573 0
1426 1
real 10m25.149s
user 6m57.916s
sys 2m4.284s
I cheated and edited and filtered the above output to show counts by
month:
1403 8
1405 10
1425 2
1425 6
1426 12
1426 9
1446 11
1447 1
1447 3
1447 4
1447 5
1447 7
For some reason August and October have the fewest Friday the 13th's.