[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Dia da semana
Ecass Dodebel wrote:
>
> >From: "Wellington Ribeiro de Assis" <wassis@epq.ime.eb.br>
> >Reply-To: obm-l@mat.puc-rio.br
> >To: "discusspio de problemas" <obm-rj@mat.puc-rio.br>
> >Subject: Dia da semana
> >Date: Fri, 18 Aug 2000 23:59:17 -2:00
> >
> >Prezados amigos
> >
> >Alguem sabe dizer como eh o algoritmo usado para se descobrir que dia
> >da semana cai uma determinada data de um ano qualquer?
> >
> >Bons estudos e abraco a todos,
> >Wellington
>
> Olá,
>
> eu tenho uma idéia. Conseguiremos descobrir em que dia da semana cai o dia D
> do mês M do ano A, se soubermos que dia da semana foi 1/1/1 (por exemplo), e
> quantos dias já se passaram até o dia D/M/A desde 1/1/1, e fazer o resto da
> divisão por 7, o resto 0 nos dirá que D/M/A é o mesmo dia da semana de
> 1/1/1, o resto 1 que D/M/A é um dia depois, e assim por diante. Vou
> apresentar uma possível solução. Defino o seguinte:
> - DA(A) = número de dias dos anos entre o ano 1 e A-1 (inclusive), para A>0,
> não vou considerar os casos com o ano negativo.
> - DM(M) = número de dias dos meses entre 1 e M-1, do ano A.
> - DD(D) = número de dias anteriores a D, no mês M do ano A.
> O resto procurado é o da divisão de ND(D/M/A)=DA(A)+DM(M)+DD(D)-ND(1/1/1)
> por 7.
> Eu não vou falar muitos detalhes (para não ficar muito chato). Tomando a
> função [x], menor inteiro, que diz o natural N, tal que N<=x<N+1, daí,
> [x]=N, temos
> DA(A) = 365(A-2) + [(A-1)/4], se A>0
> DM(M) = 31([M/2] + [M/9] - [M/10] + [M/11] - [M/12])
> + 30([M/5] + [M/7] + [M/12])
> + 28([M/3] - [M/6] - [M/9] - [M/12])
> + [1 - A/4 + [A/4]]([M/3] - [M/6] - [M/9] - [M/12])
> DD(D) = D
> Agora podemos fazer algumas simplicações módulo 7.
>
> ND(D/M/A) =
> (A-2)+[(A-1)/4]+3([M/2]+[M/9]-[M/10]+[M/11]-[M/12])+2([M/5]+[M/7]+[M/12])+[1-A/4+[A/4]]([M/3]-[M/6]-[M/9]-[M/12])+D
> (mod 7)
>
> Hoje, ND(20/8/2000) = 0 (mod 7), domingo.
> Primeiro dia da era cristã, ND(1/1/1) = 0 (mod 7), domingo.
> Proclamação da Independência, ND(7/9/1922) = 5 (mod 7), sexta-feira.
> Proclamação da República, ND(15/11/1889) = 4 (mod 7), quinta-feira.
>
> Eu tenho quase certeza de que para anos A negativos, uma expressão válida é
> a seguinte:
>
> ND(D/M/A) =
> A-[(|A|+3)/4]+3([M/2]+[M/9]-[M/10]+[M/11]-[M/12])+2([M/5]+[M/7]+[M/12])+[1-(A+1)/4+[(A+1)/4]]([M/3]-[M/6]-[M/9]-[M/12])+D
> (mod 7),
>
> ela deixa os restos similares aos da expressão com o A>0, ou seja, 0
> continua sendo domingo, e assim por diante.
>
> Eu não uni os dois casos (A>0 e A<0) numa expressão só, por que não existe o
> ano 0, e isso complicou tudo para mim, talvez eu até conseguisse, mas
> ficaria algo tão comprido que prefiro nem tentar.
>
> Obrigado!
>
> Eduardo Casagrande Stabel.
>
Eduardo:
Nao examinei com cuidado o que voce fez. Mas a primeira impressao eh que
nao esta correto porque me parece que voce esta considerando que todos
os anos multiplos de 4 sejam bissextos, o que nao eh verdade. Em suma,
parece que a matematica eh boa mas os anos bissextos infelizmente nao
sao os multiplos de 4.
Anos bissextos sao todos os que sao multiplos de 4 sem ser de 100; os
multiplos de 100 so sao bissextos se forem multiplos de 400.
Morgado