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.