Task

Write a program or a script that returns the date of the last Fridays of each month of a given year.

The year may be given through any simple input method in your language (command line, std in, etc).



Example of an expected output:

./last_fridays 2012
2012-01-27
2012-02-24
2012-03-30
2012-04-27
2012-05-25
2012-06-29
2012-07-27
2012-08-31
2012-09-28
2012-10-26
2012-11-30
2012-12-28



Related tasks
 Five weekends
 Day of the week
 Find the last Sunday of each month


 ╔════════════════════════════════════════════════════════════════════════════════════════════════╗
 ║ lastDOW:  procedure to return the date of the  last day─of─week of any particular month of any ║
 ║           particular year.                                                                     ║
 ║                                                                                                ║
 ║ The  day─of─week  must be specified  (it can be in any case, (lower─/mixed─/upper─case)  as an ║ 
 ║ English name of the spelled day of the week,  with a minimum length that causes no ambiguity.  ║
 ║                                                                                                ║
 ║ I.E.:    TU  for Tuesday.    W  for Wednesday,     Sa  for Saturday,     Su  for Sunday ...    ║
 ║                                                                                                ║
 ║ The month can be specified as an integer  1 ──► 12                                             ║                               
 ║    1=January     2=February     3=March     4=April     5=May     6=June    ...   12=December  ║
 ║ or the English  name  of the month,  with a minimum length that causes no ambiguity.           ║
 ║ I.E.:    JA  for January,   AP  for April,   JUN  for June,   JUL  for July,   D  for December.║
 ║ If omitted  [or an asterisk(*)],  the current month is used.                                   ║
 ║                                                                                                ║
 ║ The year is specified as an integer or just the last two digits  (two digit years are assumed  ║
 ║ to be in the current century,  and there is no windowing for a two─digit year).  If omitted    ║
 ║ [or an asterisk(*)],  the current year is used.     Years < 100   must be specified with  (at  ║
 ║ least 2)  leading zeroes.                                                                      ║
 ║                                                                                                ║
 ║ The method used is:  find the "day number" of the 1st of the next month and then subtract one  ║
 ║ (this gives the "day number" of the last day of the month,  bypassing the leapday mess).  The  ║
 ║ last day─of─week is then obtained straightforwardly,   or  via subtraction.                    ║
 ╚════════════════════════════════════════════════════════════════════════════════════════════════╝
