Holidays related to Easter: Difference between revisions
Content added Content deleted
(Added Fōrmulæ solution) |
(→{{header|BASH}}: Adding BASH) |
||
Line 520: | Line 520: | ||
2020 Easter: Sun 12 Apr, Ascension: Thu 21 May, Pentecost: Sun 31 May, Trinity: Sun 7 Jun, Corpus: Thu 11 Jun |
2020 Easter: Sun 12 Apr, Ascension: Thu 21 May, Pentecost: Sun 31 May, Trinity: Sun 7 Jun, Corpus: Thu 11 Jun |
||
</pre> |
</pre> |
||
=={{header|BASH}}== |
|||
<lang bash> |
|||
#! /bin/bash |
|||
# vim: ts=4 : |
|||
# Calendar algorithm source: https://www.rmg.co.uk/stories/topics/when-easter |
|||
easter() { |
|||
y=$1 |
|||
if [[ $year -gt 2099 ]] |
|||
then |
|||
echo Error: This algorithm does not work after 2099. |
|||
exit |
|||
fi |
|||
(( day = 225 - 11 * (year % 19) )) |
|||
while [[ $day -gt 50 ]] |
|||
do |
|||
(( day -= 30 )) |
|||
done |
|||
if [ $day -gt 48 ] |
|||
then |
|||
(( --day )) |
|||
fi |
|||
(( day = day + 7 - (year + year/4 + day + 1) % 7 )) |
|||
echo $day |
|||
} |
|||
for year in {1998..2099} |
|||
do |
|||
day=$( easter $year ) |
|||
if [ $day -gt 31 ] |
|||
then |
|||
(( day -= 31 )) |
|||
printf "%d-%02d-%02d\n" $year 4 $day |
|||
else |
|||
printf "%d-%02d-%02d\n" $year 3 $day |
|||
fi |
|||
done |
|||
</lang> |
|||
=={{header|BBC BASIC}}== |
=={{header|BBC BASIC}}== |