Algoritmo Doomsday

A regra Doomsday, algoritmo Doomsday ou método Doomsday é um algoritmo de determinação do dia da semana para uma determinada data. Ele fornece um calendário perpétuo já que o calendário gregoriano tem um ciclo de 400 anos. O algoritmo para cálculo mental foi desenvolvido por John Conway em 1973,[1] [2] inspirando-se no algoritmo do calendário perpétuo de Lewis Carroll.[3] [4] [5] Este algoritmo aproveita o fato de que em cada ano há um determinado dia da semana em que caem datas fáceis de lembrar, que são denominadas de dias do juízo final (Doomsday, no original em inglês). Por exemplo, o último dia de fevereiro, 4/4, 6/6, 8/8, 10/10 e 12/12, todos caem no mesmo dia da semana em qualquer ano. A aplicação do algoritmo Doomsday envolve três etapas: determinação do dia-âncora para o século; cálculo do dia-âncora para o ano (equivalente ao dia do juízo final do ano) a partir daquele para o século e seleção da data mais próxima daquelas que sempre caem no dia do juízo final — por exemplo, 4/4 e 6/6 — e contagem do número de dias (módulo 7) entre essa data-base e a data em questão para chegar ao dia da semana. A técnica se aplica tanto ao calendário gregoriano quanto ao calendário juliano, embora seus dias do juízo final geralmente sejam dias diferentes da semana.

John Conway, inventor do algoritmo Doomsday

O algoritmo é simples o suficiente para que possa ser calculado mentalmente. Conway geralmente dava a resposta correta em menos de dois segundos. Para melhorar sua velocidade, ele programou seu computador para questioná-lo com datas aleatórias toda vez que ele se conectava.[6]

Dias-âncora entre os anos 1701 e 2100

Dias-âncora para o Calendário Gregoriano
Seg.Ter.Qua.Qui.Sex.Sáb.Dom.
170117021703170417051706
17071708170917101711
171217131714171517161717
171817191720172117221723
17241725172617271728
172917301731173217331734
17351736173717381739
174017411742174317441745
174617471748174917501751
17521753175417551756
175717581759176017611762
17631764176517661767
176817691770177117721773
177417751776177717781779
17801781178217831784
178517861787178817891790
17911792179317941795
1796179717981799180018011802
18031804180518061807
180818091810181118121813
181418151816181718181819
18201821182218231824
182518261827182818291830
18311832183318341835
183618371838183918401841
184218431844184518461847
18481849185018511852
185318541855185618571858
18591860186118621863
186418651866186718681869
187018711872187318741875
18761877187818791880
188118821883188418851886
18871888188918901891
189218931894189518961897
189818991900190119021903
190419051906190719081909
191019111912191319141915
19161917191819191920
192119221923192419251926
19271928192919301931
193219331934193519361937
193819391940194119421943
19441945194619471948
194919501951195219531954
19551956195719581959
196019611962196319641965
196619671968196919701971
19721973197419751976
197719781979198019811982
19831984198519861987
198819891990199119921993
199419951996199719981999
20002001200220032004
200520062007200820092010
20112012201320142015
201620172018201920202021
202220232024202520262027
20282029203020312032
203320342035203620372038
20392040204120422043
204420452046204720482049
205020512052205320542055
20562057205820592060
206120622063206420652066
20672068206920702071
207220732074207520762077
207820792080208120822083
20842085208620872088
208920902091209220932094
209520962097209820992100

A tabela é preenchida horizontalmente, pulando uma coluna para cada ano bissexto. Esta tabela tem um ciclo de 28 anos, exceto no calendário gregoriano nos anos que são múltiplos de 100 (como 1900 e 2100, que não são anos bissextos) e que também não são múltiplos de 400 (como 2000, que ainda é um ano bissexto). Logo, o ciclo completo é de 28 anos (1.461 semanas) no calendário juliano, 400 anos (20.871 semanas) no calendário gregoriano.

Datas importantes que sempre caem em um dia do juízo final

Pode-se encontrar o dia da semana de uma determinada data do calendário usando o dia do juízo final do mês em questão. Para ajudar com isso, logo abaixo temos uma lista de datas fáceis de lembrar para cada mês, que sempre caem no dia do juízo final.

Como mencionado acima, o último dia de fevereiro é a base de definiçao do dia do juízo final do ano. Para janeiro, 3 de janeiro é um dia do juízo final durante os anos comuns e 4 de janeiro é o dia do juízo final durante os anos bissextos, que pode ser lembrado como "é 3 durante 3 anos em 4, e 4 no 4º ano". Para março, pode-se lembrar da pseudodata "0 de março", que pode ser considerada como sendo o dia anterior a 1º de março, ou seja, o último dia de fevereiro (dia-base, como visto acima).

Para os meses de abril a dezembro, os meses pares têm como datas de juízo final as datas duplas 4/4, 6/6, 8/8, 10/10 e 12/12. Os meses ímpares podem ser lembrados com o mnemônico "Eu trabalho das 9 às 5 no 7-11 ", ou seja, 5/9, 11/7 e também 9/5 e 7/11, são todos dias do juízo final.[7]

Datas do juízo final em cada ano
MêsData memorávelDia do mêsMnemônico [8]
Janeiro
  • 3 de janeiro (anos comuns)
  • 4 de janeiro (bissextos)
3/1 ou 4/1
  • 3 em 3 anos
  • 4 no 4º
Fevereiro
  • 28 de fevereiro (anos comuns)
  • 29 de fevereiro (bissextos)
28/02 ou 29/02
  • último dia de fevereiro
Março"0 de março" ou 14 de marçoDia do Pi
Abril4 de abril4/4Mês par → dia igual a mês
Maio9 de maio9/5Eu trabalho das 9 às 5 no 7-11
Junho6 de junho6/6Mês par → dia igual a mês
Julho11 de julho11/07Eu trabalho das 9 às 5 no 7-11
Agosto8 de agosto8/8Mês par → dia igual a mês
Setembro5 de setembro5/99-para-5 em 7-11
Outubro10 de outubro10/10Mês par → dia igual a mês
Novembro7 de novembro7/119-para-5 em 7-11
Dezembro12 de dezembro12/12Mês par → dia igual a mês

Exemplo

Para saber em que dia da semana caiu o Natal de 2021, proceda da seguinte forma: no ano de 2021, o dia-âncora é domingo (tabela de anos acima). Já que 12 de dezembro é um dia do juízo final, 25 de dezembro, treze dias depois (duas semanas menos um dia), cairá em um sábado. O dia de Natal é sempre um dia antes do dia do juízo final. Além disso, 4 de julho (Dia da Independência dos EUA) é sempre um dia do juízo final, assim como o Halloween (31 de outubro), Dia do Pi (14 de março) e Boxing Day (26 de dezembro).

Calculando dias-âncora

O primeiro passo do algoritmo é encontrar o dia-âncora para o século. Para efeitos da regra do juízo final, um século começa com o ano terminado em 00 e termina com o ano terminado em 99. A tabela a seguir mostra o dia-âncora dos séculos 1600s, 1700s, 1800s, 1900s, 2000s, 2100s e 2200s.

SéculoDia-âncoraÍndice (dia da semana)
1600-1699Terça-feira3
1700-1799Domingo1
1800–1899Sexta-feira6
1900–1999Quarta-feira4
2000–2099Terça-feira3
2100–2199Domingo1
2200–2299Sexta-feira6

Fórmula para obtenção do dia-âncora do século:

Para o calendário gregoriano:

Os valores acima para os dias-âncora foram obtidos através da fórmula matemática: 5 × (c mod 4) mod 7 + terça-feira = âncora. Seja r = c mod 4:

  • se r = 0 então âncora = terça-feira
  • se r = 1 então âncora = domingo
  • se r = 2 então âncora = sexta-feira
  • se r = 3 então âncora = quarta-feira

O que está de acordo com a tabela acima.

Para o calendário juliano:

6c mod 7 + domingo = âncora.

Nota: c = ⌊ano100

Após o cálculo do dia-âncora do século, partimos para encontrar o dia-âncora do ano. Para conseguir isso, de acordo com Conway:[9]

  1. Divida os dois últimos dígitos do ano (chame isso de y ) por 12 e seja a o parte inteira do quociente.
  2. Seja b o resto do mesmo quociente.
  3. Divida esse resto por 4 e seja c a parte inteira do quociente.
  4. Seja d a soma dos três números ( d = a + b + c ). (É novamente possível aqui dividir por sete e tirar o resto. Esse número é equivalente, como deve ser, à soma dos dois últimos dígitos do ano somados mais a parte inteira desses dígitos dividido por quatro.)
  5. Conte o número especificado de dias ( d ou o resto de ) a partir do dia-âncora para obter o dia-âncora do ano.

Para o ano de 1966 do séc. XX, por exemplo:

Conforme descrito no item 4, acima, isso equivale a:

Portanto, o dia-âncora de 1966 é segunda-feira.

De forma parecida, o dia-âncora de 2005 é uma segunda-feira, pois:

Por que funciona

O cálculo do dia-âncora do algoritmo é feito calculando o número de dias entre qualquer data no ano-base 00 do século e a mesma data no ano atual, calculando o módulo 7. Quando ambas as datas vêm após o dia bissexto (se houver), a diferença é de apenas 365y + y4 (arredondando pra baixo). Mas 365 é igual a 52 x 7 + 1, então, após calcular o módulo, o resultado é

Isso fornece uma fórmula mais simples, se a pessoa se sentir mais confortável ao dividir grandes valores de y por 4 e 7. Por exemplo, podemos calcular

que dá a mesma resposta do exemplo acima.

Onde 12 entra é que o padrão de (y + ⌊y4⌋) mod 7 quase se repete a cada 12 anos. Após 12 anos, nós temos (12 + 124) mod 7 = 15 mod 7 = 1. Se substituirmos por , nós tiramos este dia extra do cômputo, adicionando novamente por meio de adiante, essa retirada é compensada, resultando na fórmula final acima.

O método "ímpar + 11"

Fluxograma do método "ímpar + 11"

Um método mais simples para encontrar o dia-âncora do ano foi descoberto em 2010 por Chamberlain Fong e Michael K. Walters,[10] e descrito em seu artigo submetido ao 7º Congresso Internacional de Matemática Industrial e Aplicada (2011). Chamado de método "ímpar + 11", é equivalente[11] ao cálculo

.

É adequado para cálculo mental, porque não requer divisão por 4 (ou 12), e o procedimento é fácil de lembrar devido ao uso repetido da regra "ímpar + 11". Além disso, a adição por 11 é fácil de realizar mentalmente na aritmética de base 10.

Estendendo isso para obter o dia-âncora, o procedimento é feito por meio da atualização de uma variável T em seis etapas, como segue:

  1. Seja T os dois últimos dígitos do ano.
  2. Se T for ímpar, adicione 11.
  3. Agora faça T = T2
  4. Se T for ímpar, adicione 11.
  5. Faça
  6. Conte T dias a partir do dia-âncora do século para obter o dia-âncora do ano.

Aplicando este método ao ano de 2005, por exemplo, os passos seriam:

  1. T = 5
  2. T = 5 + 11 = 16 (adicionamos 11 porque T é ímpar)
  3. T = 162 = 8
  4. T = 8 (não fazer nada, já que T é par)
  5. T = 7 − (8 mod 7) = 7 − 1 = 6
  6. Dia-âncora para 2005 = 6 + terça-feira (dia-âncora do século XXI) = segunda-feira

A fórmula explícita para o método ímpar+11 é:

.

Embora essa expressão pareça assustadora e complicada, na verdade ela é simples[11] por causa da parte y + 11(y mod 2)2, que somente precisa ser calculada uma vez.

Sempre que for necessário somar 11, subtrair 17 produz o mesmo resultado. Embora subtrair 17 possa parecer mais difícil de realizar mentalmente do que somar 11, há casos em que subtrair 17 é mais fácil, especialmente quando o número é um número de dois dígitos que termina em 7 (como 17, 27, 37, ..., 77, 87 e 97).

Correspondência com as letras dominicais

O algoritmo do dia do juízo final está relacionado com a letra dominical do ano da seguinte forma.

Dia do juízo finalLetra Dominical
ano comumAno bissexto
DomingoCCC
Segunda-feiraBCB
Terça-feiraABA
Quarta-feiraGAG
Quinta-feiraFGF
Sexta-feiraEFE
SábadoDED

Procure na tabela abaixo a carta dominical (DL).

Centenas dos anosDLDígitos restantes do ano#
juliano



(r ÷ 7)
gregoriano


(r ÷ 4)
r5 1916 20 r0A00 06 17 2328 34 45 5156 62 73 7984 900
r4 1815 19 r3G01 07 12 1829 35 40 4657 63 68 7485 91 961
r3 17N / DF02 13 19 2430 41 47 5258 69 75 8086 972
r2 1618 22 r2E03 08 14 2531 36 42 5359 64 70 8187 92 983
r1 15N / DD 09 15 20 26 37 43 48 54 65 71 76 82 93 994
r0 1417 21 r1C04 10 21 2732 38 49 5560 66 77 8388 945
r6 13N / DB05 11 16 2233 39 44 5061 67 72 7889 956

Por exemplo, para o ano de 2017, a letra dominical é A - 0 = A.

Fórmula computacional para o dia-âncora de um ano

Para uso em computação, as seguintes fórmulas para o dia-âncora de um ano são convenientes.

Para o calendário gregoriano:

Por exemplo, o dia-âncora de 2009 é sábado no calendário gregoriano, pois

Outro exemplo, o dia-âncora de 1946 é quinta-feira, já que

Para o calendário juliano:

Os cálculos acima também se aplicam ao calendário gregoriano prolético e ao calendário juliano prolético. Elas usam a função parte inteira e a numeração do ano astronômico para os anos AC.

Ciclo de 400 anos de dias-âncora

Séculos Julianos-1600J

-900J

-200J

500J

1200J

1900J

2600J

3300J

-1500J

-800J

-100J

600J

1300J

2000J

2700J

3400J

-1400J

-700J

0J

700J

1400J

2100J

2800J

3500J

-1300J

-600J

100J

800J

1500J

2200J

2900J

3600J

-1200J

-500J

200J

900J

1600J

2300J

3000J

3700J

-1100J

-400J

300J

1000J

1700J

2400J

3100J

3800J

-1000J

-300J

400J

1100J

1800J

2500J

3200J

3900J

Séc. gregorianos-1600

-1200

-800

-400

0

400

800

1200

1600

2000

2400

2800

3200

3600

-1500

-1100

-700

-300

100

500

900

1300

1700

2100

2500

2900

3300

3700

-1400

-1000

-600

-200

200

600

1000

1400

1800

2200

2600

3000

3400

3800

-1300

-900

-500

-100

300

700

1100

1500

1900

2300

2700

3100

3500

3900

AnosDias-âncora
00285684TerSegDomSábSexQuiQua
01295785QuaTerSegDomSábSexQui
02305886QuiQuaTerSegDomSábSex
03315987SexQuiQuaTerSegDomSáb
04326088DomSábSexQuiQuaTerSeg
05336189SegDomSábSexQuiQuaTer
06346290TerSegDomSábSexQuiQua
07356391QuaTerSegDomSábSexQui
08366492SexQuiQuaTerSegDomSáb
09376593SábSexQuiQuaTerSegDom
10386694DomSábSexQuiQuaTerSeg
11396795SegDomSábSexQuiQuaTer
12406896QuaTerSegDomSábSexQui
13416997QuiQuaTerSegDomSábSex
14427098SexQuiQuaTerSegDomSáb
15437199SábSexQuiQuaTerSegDom
164472SegDomSábSexQuiQuaTer
174573TerSegDomSábSexQuiQua
184674QuaTerSegDomSábSexQui
194775QuiQuaTerSegDomSábSex
204876SábSexQuiQuaTerSegDom
214977DomSábSexQuiQuaTerSeg
225078SegDomSábSexQuiQuaTer
235179TerSegDomSábSexQuiQua
245280QuiQuaTerSegDomSábSex
255381SexQuiQuaTerSegDomSáb
265482SábSexQuiQuaTerSegDom
275583DomSábSexQuiQuaTerSeg

Como no calendário gregoriano há 146.097 dias, ou exatamente 20.871 semanas de sete dias, em 400 anos, o ciclo se repete a cada quatro séculos. Por exemplo, o dia-âncora dos 1700s é o mesmo que o dia-âncora dos 2100s, Domingo.

O ciclo completo de 400 anos dos dias do juízo final é dado na tabela. Os séculos são para o calendário gregoriano e gregoriano proléptico, a menos que sejam marcados com um J para juliano. As linhas dos anos bissextos gregorianos são as destacadas na tabela.

Anos negativos usam numeração de ano astronômico. O ano 25 AEC é −24, mostrado na coluna de −100J (juliano proléptico) ou −100 (gregoriano proléptico), na linha 76.

Frequência do dia-âncora gregoriano no ciclo de 400 anos por dia da semana e tipo de ano
DomingoSegunda-feiraTerça-feiraQuarta-feiraQuinta-feiraSexta-feiraSábadoTotal
anos não bissextos43434343444344303
anos bissextos1315131513141497
Total56585658575758400

Um ano bissexto com a segunda-feira como dia-âncora significa que o domingo é um dos 97 dias pulados na sequência de 400 anos. Assim, o número total de anos com domingo como dia- âncora é 71 menos o número de anos bissextos com segunda-feira como dia do juízo final, etc. Como a segunda-feira como dia-âncora é pulada em 29 de fevereiro de 2000 e o padrão de dias bissextos é simétrico em relação a esse dia bissexto, as frequências de dias-âncora por dia da semana (adicionando anos comuns e bissextos) são simétricas em relação à segunda-feira. As frequências dos dias-âncora dos anos bissextos por dia da semana são simétricas em relação ao dia-âncora de 2000, terça-feira.

A frequência de uma determinada data em um determinado dia da semana pode ser facilmente derivada do exposto acima (para uma data de 1º de janeiro a 28 de fevereiro, relacione-a com o dia-âncora do ano anterior).

Por exemplo, 28 de fevereiro é um dia após o dia-âncora do ano anterior, então é 58 vezes cada na terça, quinta e domingo, etc. 29 de fevereiro é o dia-âncora de um ano bissexto, então é 15 vezes cada na segunda e quarta etc.

Ciclo de 28 anos

Em relação à frequência dos dias do juízo final em um ciclo juliano de 28 anos, há 1 ano bissexto e 3 anos comuns para cada dia da semana, o último 6, 17 e 23 anos após o primeiro (portanto, com intervalos de 6, 11, 6 e 5 anos; não distribuído uniformemente porque após 12 anos o dia é pulado na sequência dos dias do juízo final). O mesmo ciclo se aplica a qualquer data a partir de 1º de março caindo em um determinado dia da semana.

Para qualquer data até 28 de fevereiro cair em um determinado dia da semana, os 3 anos comuns são 5, 11 e 22 anos após o ano bissexto, portanto, com intervalos de 5, 6, 11 e 6 anos. Assim, o ciclo é o mesmo, mas com o intervalo de 5 anos depois, em vez de antes do ano bissexto.

Assim, para qualquer data, exceto 29 de fevereiro, os intervalos entre os anos comuns que caem em um determinado dia da semana são 6, 11, 11.

Para 29 de fevereiro cair em um determinado dia da semana, só há uma ocorrência disto acada 28 anos e, é claro, em um ano bissexto.

Calendário juliano

O calendário gregoriano está atualmente alinhado com precisão com eventos astronômicos, como solstícios. Em 1582, essa modificação do calendário juliano foi instituída pela primeira vez. Para corrigir o desvio do calendário, 10 dias foram pulados, então o dia do juízo final retrocedeu 10 dias (ou seja, 3 dias): quinta-feira, 4 de outubro (juliano, dia do juízo final é quarta-feira) foi seguido por sexta-feira, 15 de outubro (gregoriano, dia do juízo final é domingo). A tabela inclui os anos do calendário juliano, mas o algoritmo é apenas para o calendário gregoriano e proléptico gregoriano.

Há de se observar que o calendário gregoriano não foi adotado simultaneamente em todos os países; portanto, por muitos séculos, diferentes regiões usaram datas diferentes para o mesmo dia.

Exemplos completos

Exemplo 1 (1985)

Suponha que queremos saber em que dia da semana caiu 18 de setembro de 1985. Começamos com o dia-âncora do século, quarta-feira. Depois desse passo, adicione a, b e c, calculados conforme acima:

  • a é a parte de inteira de 8512, que é 7.
  • b é igual a 85 mod 12, resultando em 1.
  • c é a parte inteira de b4, sendo igual a 0.

Isso produz a + b + c = 8. Contando 8 dias a partir de quarta-feira, chegamos a quinta-feira, que é o dia-âncora de 1985. (Usando números: na aritmética do módulo 7, 8 é congruente a 1. Como o dia-âncora do século é quarta-feira (índice 4) e 4 + 1 = 5, o dia-âncora de 1985 é quinta-feira (índice 5). ) Agora comparamos 18 de setembro com um dia do juízo final próximo, 5 de setembro. Vemos que o dia 18 é 13 dias após este dia do juízo final, ou seja, duas semanas menos um dia. Portanto, o dia 18 foi uma quarta-feira (dia anterior à quinta-feira). (Usando números: na aritmética do módulo 7, 13 é congruente com 6 ou, mais sucintamente, -1. Assim, tiramos um do dia do juízo final, quinta-feira, para descobrirmos que 18 de setembro de 1985 foi uma quarta-feira.)

Exemplo 2

Suponha que queremos encontrar o dia da semana em que a Guerra Civil Americana se iniciou em Fort Sumter, que foi 12 de abril de 1861. Dessa vez, não vamos usar a tabela de dia-âncora do século, calculando este por meio da fórmula do parágrafo "Calculando dias-âncora". Temos e . Logo, o dia-âncora do século é . Os dígitos finais 61 fornecem um deslocamento de seis dias em relação ao dia-âncora do século, pois

então o dia-âncora de 1861 é quinta-feira (âncora do século, sexta-feira, mais 6 dias). Logo, 4 de abril foi uma quinta-feira, sendo que 12 de abril, 8 dias depois, foi uma sexta-feira.

Ver também

  • Computus - Algoritmo de Gauss para cálculo da data da Páscoa
  • Congruência de Zeller - Um algoritmo (1882) para calcular o dia da semana para qualquer data do calendário juliano ou gregoriano.
  • Cálculo mental

Referências

Ligações externas