Algoritme for å bestemme ukedag

For å **regne ut på hvilken [[Ukedager|ukedag]]** **en bestemt dato** falt i fortid eller vil falle i fremtiden, kan man bruke ulike algoritmer. Alternativt kan man benytte evighetskalendere, som ikke krever noen beregninger fra brukerens side. Typisk kan man ønske å fastslå på hvilken ukedag noen ble født eller på hvilken ukedag en spesifikk historisk begivenhet fant sted.

## Innføring
For å bestemme ukedagen til en dato fra numeriske beregninger, starter man ved å tildele hver av de syv ukedagene (søndag, mandag, … lørdag) et tall, i rekkefølge. Vanligvis brukes 0 til 6, som tilsvarer ISO 8601s  alternative bruk av 1 = mandag til 7 = søndag. Dette oppnås ved aritmetikk modulo 7. Modulo 7 er en operasjon som beregner resten av et tall når det deles med 7, for eksempel er 10 modulo 7 lik 3. Da behandles tallet 7 som null, tallet 8 som 1, tallet 9 som 2, osv. Dette tolkes slik at om søndag representeres som 0, så er 7 dager senere også en søndag, 8 dager senere er en mandag, osv.

Utgangspunktet for så godt som alle disse metodene er å starte med en gitt historisk dato hvor ukedagen er kjent, for eksempel ta utgangspunkt i at 1. januar 1800 var en onsdag. Deretter regner man ut hvor mange dager det er mellom den datoen og datoen man ønsker å finne ukedagen til. Til slutt bruker man modulær aritmetikk 7 for å fastslå på hvilken ukedag den aktuelle datoen falt eller vil falle.

En standardmetode er å slå opp numerisk verdi for første ukedag i et gitt århundre, slå opp (eller beregne, ved en kongruensmetode) en månedkorreksjon, beregne antall skuddår siden starten av århundret, endelig legge disse sammen med antall år siden århundrets begynnelse. Til slutt finner man antall forløpte dager og bruker modulo 7 for å bestemme ukedagen.

Man kan enten summere først og finne resten (ved deling med 7) til slutt eller finne resten ved hvert trinn, som i Lewis Carrolls metode. Begge metodene er praktiske, den første metoden er enklere for elektroniske kalkulatorer og dataprogrammer, mens den siste kan være bedre egnet for hoderegning. Ingen av metodene gitt her sjekker inngangsdata, så hvis en starter med ufornuftige datoer vil det gi feil svar.

## Nyttige begrep
### Samsvarende måneder
«Samsvarende måneder» er de månedene innenfor samme kalenderår som starter på samme ukedag. For eksempel er det samsvar mellom september og desember, fordi 1. september faller på samme ukedag som 1. desember. Måneder kan bare samsvare hvis antallet dager mellom deres førstedager er delelig med 7, med andre ord, om det er et helt antall uker mellom deres førstedager. For eksempel februar samsvarer med mars (unntatt skuddår) fordi februar har 28 dager, som er nøyaktig fire uker. I et skuddår vil januar og februar ha andre samsvarsmåneder enn i et vanlig år, siden 29. februar betyr at alle senere måneder starter en dag senere.

Månedene samsvarer slik:
For vanlige år:
* januar og oktober.
* februar, mars og november.
* april og juli.
* Ingen måneder samsvarer med august.
For skuddår:
* januar, april og juli.
* februar og august.
* mars og november.
* Ingen måneder samsvarer med oktober.
For alle årene:

* september og desember.
* Ingen måneder samsvarer med mai eller juni.
I månedtabellen under, så har samsvarende måneder det samme tallet, et faktum som følger direkte fra definisjonen.

### Samsvarende år

Det er syv mulige forskjellige ukedager et år kan starte, og skuddår vil endre ukedagen for alle dager etter 29. februar.  Dette betyr at et år kan ha 14 forskjellige konfigurasjoner (med andre ord, det er 14 forskjellige mulige årskalendere). For eksempel, 2011 er et normalår som begynner på en lørdag, som betyr at 2011 samsvarer med kalenderåret 2005. Men 2012 er et skuddår som starter på en søndag, som betyr at de første to månedene det året starter på samme dag som de gjør i 2006 (1. januar er en søndag, mens 1. februar er en onsdag), men på grunn av skuddår, så samsvarer de ti siste månedene det året med de ti siste månedene av 2007.

## En tabellmetode for å beregne ukedag
### Grunnleggende metode for hoderegning
Denne metoden er gyldig både for den den gregorianske kalenderen  og for den julianske kalenderen. Storbritannia med sine kolonier begynte å bruke den gregorianske kalenderen på torsdag 14. september 1752, dagen før denne var onsdag, 2. september 1752 (Old Style).  De områdene som nå utgjør USA begynte å bruke den nye kalenderen på forskjellige tidspunkt, avhengig av hvilken kolonimakt de lå under: Spania og Frankrike hadde brukt den nye kalenderen siden 1582, mens Russland stadig brukte den julianske kalenderen da Alaska ble kjøpt fra dem i 1867.

Formelen er d + m + y + \left\lfloor\frac{y}{4}\right\rfloor + c \mod {7}, hvor:
* *d* er dag i måneden,
* *m* er månedens tall i månedstabellen,
* *y* er de to siste siffrene i årstallet, og
* *c* er århundretallet. For en gregoriansk dato så er dette 6 hvis de første to sifrene i årstallet er delelig med fire og etterfølgende århundrer er 4-2-0 (så århundretallene for 2000, 2100, 2200, og 2300 er respektive 6, 4, 2 og 0).  For en juliansk dato, så er dette 6 for 1200 og etterfølgende århundrer trekker man fra 1 inntil 0, så er neste århundre 6 igjen (så 1300 er 5 og 1100 er 0).

Hvis resultatet er 0, så var datoen en søndag, hvis 1, en mandag, osv.

### Dagstabell

### Månedstabell

### Årstabell

### Århundrestabell

### Fullstendig tabell

For å bestemme ukedag (1. januar 2000, lørdag)
*dag i måneden: 1 ~ 31 (1)
*måneden: 1 for januar ~ 12 for desember (1，man) 
*året: 00 ~ 99 mod 28 og kursiv for januar eller februar i skuddår (*00* ~ man)
*århundre mod 4 for den gregorianske kalenderen og mod 7 for den julianske kalenderen (20 or 0 ~ lør).
For å bestemme søndagsbokstaven til et årstall: (2100 C ~ 2199 F)
*the century column: from the century row to Sun which is in the column and in the row (21 or 1)
*the dominical letter: Mon for A ~ Sun for G from the year row to the century column (00 ~ Wed for C, 15 for 99 ~ Sat for F).

For den gregorianske datoen 1. januar 2000 (et skuddår):
*dag i måneden: 1
*January in the months table: 6
*siste to sifre i året (delt på 4): 0
*Century number: 6
Resultatet er 13, leaving a remainder of 6 when divided by 7, så 1. januar, 2000 var en lørdag.

For den julianske datoen 13. oktober 1307:
*dag i måneden: 13
*October in the months table: 0
*siste to sifre i året delt på 4: 1
*siste to sifre i året: 7
*Century number: 5
Resultatet er 26, leaving a remainder of 5 when divided by 7, så 13. Oktober, 1307 var en fredag.

## Gauss' algoritme

### Formler utledet fra Gauss' algoritme

### Andre varianter

## Andre, rent matematiske algoritmer

*  Zellers algoritme

* Kraitchiks algoritme

* Schwerdtfegers variant

* Tønderings algoritme
 
* Dinhs algoritme

## Andre metoder (som bruker tabeller eller lignende)

### Lewis Carrolls metode

### Implementasjons-avhengige metoder av Sakamoto, Lachman, Keith og Craver

### Babwanis metode

## Se også
* Ukenummer: Enkel utregning av ukesnummer
* Ukedager: Enkel utregning av ukedag
* ISO 8601
* Søndagsbokstav
* Påskeformelen
* Solsyklus
* Gyldentall

## Referanser


## Litteratur
*
*
*
*

## Eksterne lenker
* Compact tabular method for memorization, also for the Julian calendar
* An algorithm for both Gregorian and Julian calendars
* When countries changed from the Julian calendar
* World records for mentally calculating the day of the week in the Gregorian calendar 
* A recent reworking of the method of Keith & Craver eliminating the need to recall a value for each year.
* A trainer for mental calculation of the day of the week