Find the last Sunday of each month: Difference between revisions
Content added Content deleted
(Added Quackery.) |
|||
Line 3,707: | Line 3,707: | ||
2013-12-29 |
2013-12-29 |
||
</pre> |
</pre> |
||
=={{header|Quackery}}== |
|||
<lang Quackery> [ over 3 < if [ 1 - ] |
|||
dup 4 / over + |
|||
over 100 / - |
|||
swap 400 / + |
|||
swap 1 - |
|||
[ table |
|||
0 3 2 5 0 3 |
|||
5 1 4 6 2 4 ] |
|||
+ + 7 mod ] is dayofweek ( day month year --> weekday ) |
|||
[ dup 400 mod 0 = iff |
|||
[ drop true ] done |
|||
dup 100 mod 0 = iff |
|||
[ drop false ] done |
|||
4 mod 0 = ] is leap ( year --> b ) |
|||
[ swap 1 - |
|||
[ table |
|||
31 [ dup leap 28 + ] |
|||
31 30 31 30 31 31 30 |
|||
31 30 31 ] |
|||
do nip ] is monthdays ( month year --> n ) |
|||
[ number$ |
|||
2 times |
|||
[ char - join |
|||
over 10 < if |
|||
[ char 0 join ] |
|||
swap number$ join ] |
|||
echo$ ] is echoymd ( day month year --> ) |
|||
[ dip |
|||
[ 2dup monthdays |
|||
dup temp put |
|||
unrot dayofweek ] |
|||
- dup 0 < if [ 7 + ] |
|||
temp take swap - ] is lastwkday ( month year wkd --> n ) |
|||
[ temp put |
|||
12 times |
|||
[ i^ 1+ over |
|||
2dup temp share lastwkday |
|||
unrot echoymd cr ] |
|||
drop temp release ] is lastwkdays ( year wkd --> ) |
|||
[ 0 lastwkdays ] is lastsundays ( year --> ) |
|||
2013 lastsundays</lang> |
|||
{{out}} |
|||
<pre>2013-01-27 |
|||
2013-02-24 |
|||
2013-03-31 |
|||
2013-04-28 |
|||
2013-05-26 |
|||
2013-06-30 |
|||
2013-07-28 |
|||
2013-08-25 |
|||
2013-09-29 |
|||
2013-10-27 |
|||
2013-11-24 |
|||
2013-12-29</pre> |
|||
=={{header|R}}== |
=={{header|R}}== |