PROG0338 - World Calendar

no tags 

The world calendar (also universal calendar) is a proposal to reconstruct the Gregorian calendar to a calendar where the days of the week are in the same week every year. This includes Christmas and New Year's day. The concept for this calendar was already developed in 1834 by Marco Mastrofini, but it was only one hundred years later that Elisabeth Achelis drew attention to it when she founded the World Calendar Association (WCA) in 1930. This organization argued this calendar should be put in use, first in the League of Nations and later in the UNO.

The world calendar is a fairly simple adaption of the 1582 Gregorian calendar. A year is divided in 12 months. Every year starts at Sunday 1 January and after that, there's always a fixed combination of the date and day of the week. The year is divided in 4 quarters. Every quarter counts 91 days. January, April, July and October are always the first month of a quarter and the first day is always a Sunday. These months count 31 days, the two next months count 30 days. This way, there would always be 364 days in a year. In order to come to a duration of 365 days, 5 hours, 48 minutes and 45,1814 seconds (an entire rotation of the earth around the sun) one leap day is needed yearly and a second leap day every four years (which is the same case in the Gregorian calendar). The necessary, yearly leap day would be 31 December. That would not be a Sunday that comes after Saturday 30 December, but a global bank holiday called World Day. After that comes 1 January — the beginning of the next year. In leap years, there is an extra day in the summer. That would be 31 June. The WCA strongly argued inserting the World calendar in 2002, because 1 January would then be a Sunday.

January
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
February
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
March
Su Mo Tu We Th Fr Sa
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
April
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
May
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
June
Su Mo Tu We Th Fr Sa
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
 
leap day
July
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
August
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
September
Su Mo Tu We Th Fr Sa
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
October
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
November
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
December
Su Mo Tu We Th Fr Sa
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
 
World Day

The advantage of this calendar is its simple structure. The year always starts on a Sunday and every other date is always in the same week. The quarters, which each consist of 91 days, count exactly 13 weeks. Because of this, statistics that are based on numbers per quarter can be compared better. The yearly 'leap day' on 31 December is a holiday that has nothing to do with a religion or with any culturally determined phenomenon. It is the day the earth starts a new rotation. This applies to all earthlings. It is a bank holiday for the entire world population, a day that could symbolize man's unity. Furthermore there is a great advantage in the countries where Christmas is celebrated. Christmas Day and Boxing day are on a Monday and Tuesday.

The biggest disadvantage is breaking the current pattern of a 7-day week. Saturday 30 December won't be followed by a Sunday and every four years, there won't be a Sunday after Saturday 30 June. This means that a tradition of thousands of years that was introduced by the Babylonians (1800 to 539 BC) would be broken. Since then, the introduction of the 7-day week has survived every calendar reformation. Introducing this calendar would mean great problems for determining religious holidays that are based on a 7-day week. 

Assignment

Write a function worldcalendar to which a number $d$ ($1 \leq d \leq 366$) of a day of the world calendar should be given. Assume this is a year in the world calendar that has both a world day and a leap day, the total amount of days that year being 366. The days are numbered starting from 1, so that number 1 corresponds with Sunday 1 January. The function should print a string of the format "weekday day month", that represents the day from the world calendar with the number given. Here, also the special weekdays worldday and leapday are taken into consideration. This assignment is made in order to use the structure of the world calendar as efficiently as possible, so that you can keep the code of the function worldcalendar as short as possible.

Example

>>> worldcalendar(1)
'Sunday 1 January'
>>> worldcalendar(32)
'Wednesday 1 February'
>>> worldcalendar(62)
'Friday 1 March'
>>> worldcalendar(92)
'Sunday 1 April'
>>> worldcalendar(182)
'Saturday 30 June'
>>> worldcalendar(183)
'leapday 31 June'
>>> worldcalendar(184)
'Sunday 1 July'
>>> worldcalendar(275)
'Sunday 1 October'
>>> worldcalendar(333)
'Tuesday 28 November'
>>> worldcalendar(365)
'Saturday 30 December'
>>> worldcalendar(366)
'worldday 31 December'

De wereldkalender (ook wel universele kalender genoemd) is een voorstel om de Gregoriaanse kalender te hervormen tot een kalender waarbij de dagen van de week ieder jaar opnieuw op dezelfde weekdag vallen. Dus ook Kerstmis en Nieuwjaarsdag. Het concept voor deze kalender werd reeds ontwikkeld in 1834 door Marco Mastrofini, maar werd pas honderd jaar later serieus onder de aandacht geplaatst door Elisabeth Achelis die in 1930 de World Calendar Association (WCA) oprichtte. Deze organisatie bepleitte de instelling van deze kalender eerst bij de Volkenbond en later bij de UNO.

De wereldkalender is een betrekkelijk eenvoudige wijziging van de Gregoriaanse kalender van 1582. Een jaar wordt verdeeld in 12 maanden. Elk jaar begint met zondag 1 januari en daarna bestaat er steeds een vaste combinatie van datum en dag in de week. Het jaar is opgedeeld in vier kwartalen. Elk kwartaal heeft 91 dagen. Januari, april, juli en oktober zijn steeds de eerste maand van een kwartaal en de eerste dag daarvan valt steeds op een zondag. Deze maanden hebben 31 dagen, de twee volgende maanden hebben 30 dagen. Op die manier zou een jaar altijd 364 dagen hebben. Om te komen tot een duur van 365 dagen, 5 uren, 48 minuten en 45,1814 seconden (een hele omwenteling van de aarde rond de zon) is er ieder jaar één schrikkeldag nodig en (net als in de Gregoriaanse kalender) om de vier jaar een (tweede) schrikkeldag. Die noodzakelijke, jaarlijkse schrikkeldag is dan 31 december. Dat is dan geen zondag die volgt op zaterdag 30 december, maar over de hele wereld een feestdag die Werelddag wordt genoemd. Daarna volgt zondag 1 januari — het begin van het volgende jaar. In schrikkeljaren wordt in de zomer een extra dag ingelast. Dat is dan 31 juni. De WCA heeft in 2012 sterk gepleit voor de invoering van de Wereldkalender, want toen viel 1 januari ook op een zondag.

Januari
Zo Ma Di Wo Do Vr Za
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Februari
Zo Ma Di Wo Do Vr Za
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
Maart
Zo Ma Di Wo Do Vr Za
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
April
Zo Ma Di Wo Do Vr Za
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Mei
Zo Ma Di Wo Do Vr Za
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
Juni
Zo Ma Di Wo Do Vr Za
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
 
Schrikkeldag
Juli
Zo Ma Di Wo Do Vr Za
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Augustus
Zo Ma Di Wo Do Vr Za
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
September
Zo Ma Di Wo Do Vr Za
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Oktober
Zo Ma Di Wo Do Vr Za
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
November
Zo Ma Di Wo Do Vr Za
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
December
Zo Ma Di Wo Do Vr Za
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
 
Werelddag

Het voordeel van deze kalender is de eenvoudige structuur. Het jaar begint altijd met een zondag en elke andere datum valt steeds in dezelfde week. De kwartalen, elk bestaande uit 91 dagen, tellen precies 13 weken. Daardoor zijn statistieken die gebaseerd zijn op cijfers per kwartaal nog beter onderling vergelijkbaar. De jaarlijkse 'schrikkeldag' op 31 december is een feestdag die los staat van een bepaalde religie of wat voor cultureel bepaald verschijnsel dan ook. Het is de dag waarop de aarde aan een nieuw rondje begint. Dit geldt voor iedere aardbewoner. Het is dus een feestdag voor de hele wereldbevolking, een dag die de verbondenheid van de mensheid zou kunnen symboliseren. Verder is er een groot voordeel in landen waar kerstmis wordt gevierd. Eerste en tweede kerstdag vallen nu altijd op vaste dagen: maandag en dinsdag.

Als grootste nadeel wordt gezien het doorbreken van het patroon van de zevendaagse week. Op zaterdag 30 december volgt geen zondag en om de vier jaar volgt op 30 juni geen zondag. Dat betekent een breuk met een traditie van duizenden jaren die werd ingesteld door de Babyoniërs (1800 tot 539 v. Chr.). De instelling van de week van zeven dagen heeft sindsdien alle kalenderhervormingen overleefd. Invoering van deze kalender betekent grote problemen voor het vaststellen van religieuze feesten die gebaseerd zijn op de week van zeven dagen.

Opgave

Schrijf een functie wereldkalender waaraan als argument een volgnummer $d$ ($1 \leq d \leq 366$) van een dag uit de wereldkalender moet doorgegeven worden. Veronderstel hierbij een jaar in de wereldkalender waarin er zowel een werelddag als een schrikkeldag voorkomen, zodat het jaar in totaal 366 dagen telt. Volgnummers van dagen worden genummerd vanaf 1, zodat volgnummer 1 correspondeert met zondag 1 januari. De functie moet een string teruggeven van de vorm "weekdag dag maand", die de dag uit de wereldkalender beschrijft met het opgegeven volgnummer. Hierbij worden dus ook de speciale weekdagen werelddag en schrikkeldag in beschouwing genomen. De bedoeling van deze opgave is om zo goed mogelijk gebruik te maken van de structuur van de wereldkalender, zodat je de code voor de functie wereldkalender zo beknopt mogelijk kan houden.

Voorbeeld

>>> wereldkalender(1)
'zondag 1 januari'
>>> wereldkalender(32)
'woensdag 1 februari'
>>> wereldkalender(62)
'vrijdag 1 maart'
>>> wereldkalender(92)
'zondag 1 april'
>>> wereldkalender(182)
'zaterdag 30 juni'
>>> wereldkalender(183)
'schrikkeldag 31 juni'
>>> wereldkalender(184)
'zondag 1 juli'
>>> wereldkalender(275)
'zondag 1 oktober'
>>> wereldkalender(333)
'dinsdag 28 november'
>>> wereldkalender(365)
'zaterdag 30 december'
>>> wereldkalender(366)
'werelddag 31 december'


Added by:Peter Dawyndt
Date:2013-02-19
Time limit:10s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:PY_NBC
Resource:None