Lewis Carroll – Técnica para calcular o dia da semana de uma data específica (1887)
(futilitycloset.com)- Em uma carta enviada à Nature em 31 de março de 1887, Lewis Carroll propôs um procedimento para descobrir mentalmente o dia da semana de qualquer data
- A data é dividida em quatro itens — século, ano, mês e dia — que são somados, mantendo-se durante o cálculo apenas o resto da divisão por 7 para reduzir a complexidade
- Carroll disse que ele próprio levava em média cerca de 20 segundos, e acreditava que um calculista rápido poderia fazer isso em até 15 segundos
- As regras incluem a diferença entre Old Style e New Style, correção de ano bissexto e valores de item para cada mês; o resultado final é interpretado na ordem 0=Sunday, 1=Monday
- Nos exemplos, 18 de setembro de 1783 dá Thursday, e 23 de fevereiro de 1676, após a correção de ano bissexto, dá Wednesday
Dividindo a data em quatro itens
- Em uma carta enviada à Nature em 31 de março de 1887, Lewis Carroll apresentou um método para determinar de cabeça o dia da semana de uma data específica
- A data de entrada é dividida em quatro partes
- Century-Item: os dois primeiros dígitos do ano
- Year-Item: o ano após o século
- Month-Item: o mês
- Day-Item: o dia do mês
- Cada item é calculado e adicionado ao total acumulado; se um item ou a soma ultrapassar 7, mantém-se apenas o resto da divisão por 7
Regras de cálculo por item
-
Century-Item
- Em Old Style, considera-se que termina em 2 de setembro de 1752, e o valor do século é subtraído de 18
- Em New Style, considera-se que começa em 14 de setembro de 1752; toma-se o resto da divisão do valor do século por 4, subtrai-se de 3 e depois multiplica-se por 2
- Por exemplo, no Century-Item de 1811, usam-se os dois primeiros dígitos, 18
-
Year-Item
- Soma-se a quantidade de 12s no ano após o século, o valor restante e a quantidade de 4s contida nesse restante
-
Month-Item
- Se o nome do mês começa ou termina com vogal, subtrai-se de 10 sua ordem no ano
- Somando a isso o número de dias do mês, obtém-se o valor do item do mês seguinte
- Os valores mensais usados após a divisão por 7 são os seguintes
- January 0, February 3, March 3, April 6, May 1, June 4
- July 6, August 2, September 5, October 0, November 3, December 5
-
Day-Item
- Usa-se o próprio dia do mês
-
Correção de ano bissexto
- Se a data cair em January ou February de um ano bissexto, subtrai-se 1 do total final
- Se o total for 0, soma-se antes 7 e então subtrai-se 1
- Um ano bissexto é divisível por 4, mas anos de século em New Style são exceção se o número do século não for divisível por 4
- Como exemplo, 1800 se enquadra nessa exceção em New Style
- O resultado final é interpretado como número do dia da semana: 0 é Sunday, 1 é Monday, e assim por diante
Exemplos de cálculo e fonte
- O resultado para 18 de setembro de 1783 é Thursday
- 23 de fevereiro de 1676, após a correção de ano bissexto, resulta em Wednesday
- Esse procedimento foi transmitido por meio de Edward Wakeling em Rediscovered Lewis Carroll Puzzles, 1995
1 comentários
Opiniões do Hacker News
Este método é muito parecido com o que eu uso e, conversando com Art Benjamin, vi que ele também usava um método semelhante. É fácil fazer em 10 a 15 segundos, mas exige prática, pouquíssima memorização e um pouco de cálculo mental.
Eu o uso com frequência até para manter a intuição afiada e, depois que você aprende, ele se mostra surpreendentemente útil, então acaba continuando a usar. J. H. Conway usava outra técnica, a Doomsday rule, e eu passei a usá-la para calcular datas do ano atual. É mais rápida e mais fácil, mas encontrar o “Doomsday” de outros anos é mais difícil, então nesses casos volto ao método original.
Por exemplo, para 24/05/2024, somando 12 anos desde 2012, 3 anos bissextos, o número mágico de maio, 2, e o dia 24, e tirando mod 7, temos
(12+3+2+24)=6, ou seja, sexta-feira. Os números mágicos de cada mês podem ser memorizados como144 / 025 / 036 / 146, e, se necessário, também podem ser calculados a partir do princípio.144 : Jan, Feb, Mardeve ser entendido como Jan=1, Feb=4, Mar=4.20+5+4+7 ≡ 1, então esperava domingo, mas na verdade era sábado, pois 2032 é ano bissexto e a data é anterior a 29 de fevereiro.Nesses casos, isto é, em ano bissexto antes de 29 de fevereiro ou até esse dia, é preciso subtrair 1.
0, 1, -1, 0, 0, 1, 1, 2, 3, 3, 4, 4são os deslocamentos entre o dia do ano correspondente ao dia 1 de cada mês e o dia do ano que ele teria se todos os meses anteriores tivessem 30 dias.Por exemplo, se os primeiros 11 meses tivessem todos 30 dias, 25 de dezembro seria o dia
30×11+25=355; somando a isso o 12º deslocamento, 4, obtemos o dia real 359. Essa sequência de deslocamentos é fácil de memorizar e, depois disso, os números mágicos de cada mês podem ser obtidos porMagic(n)=2n+Offset(n)+c.Nos números mágicos
1 4 4 0 2 5 0 3 6 1 4 6,c=-1, e dezembro fica2×12+4-1 ≡ 6 (mod 7). Inversamente, também é possível recuperar os deslocamentos a partir dos números mágicos memorizados calculandoMagic(n)-2n-c, bastando lembrar que o intervalo dos deslocamentos é[-1,4].Enquanto lia o texto, acabei pesquisando a diferença entre datas Old Style/New Style e o que aconteceu em 1752. Segundo o Calendar (New Style) Act 1750, até o século XVIII, pela lei britânica, o ano começava havia séculos em 25 de março, isto é, no Lady Day.
Assim, por exemplo, o dia seguinte a 24 de março de 1707 era 25 de março de 1708; o dia seguinte a 31 de dezembro de 1708 ainda era 1º de janeiro de 1708; e 1709 só chegava quase três meses depois. Ainda bem que isso mudou.
Fico curioso se em outros países também restam tantos patches legados de épocas antigas.
Mas o método de Carroll assume 1º de janeiro como primeiro dia do ano e, por isso, não chega à resposta correta, “Friday”. Curiosamente, as pessoas que republicaram o método de Carroll não apontaram esse erro, e o texto linkado tem a mesma falha.
caldo Linux tem um tratamento especial que reconhece setembro de 1752: https://github.com/util-linux/util-linux/blob/9f15d2de8117732845b2e891a2d24d987ee4e3ed/misc-utils/cal.c#L1079cal 1752, vi que no calendário de setembro faltam os dias entre quarta-feira, dia 2, e quinta-feira, dia 14.Embora haja controvérsia, também existe a explicação de que a transição para o calendário gregoriano é a origem do Dia da Mentira: https://en.wikipedia.org/wiki/April_Fools%27_Day, https://en.wikipedia.org/wiki/Gregorian_calendar
É difícil acompanhar o método de cálculo do item do mês no texto. Ele explica que, se o mês começa ou termina com vogal, deve-se subtrair de 10 a posição desse mês no ano e, somando a isso o número de dias desse mês, obtém-se o item do mês seguinte.
Mas dezembro, que é o mês anterior a janeiro, não começa nem termina com vogal, então não deveria ser subtraído de 10, e teríamos
12+31 ≡ 1; no entanto, o texto diz que é 0. Fevereiro também: como January termina com vogal,10-1+31 ≡ 4, mas o texto diz 3; e março, se calculado com base em February, também não bate.Abril e maio batem, mas junho volta a não bater, então não sei o que entendi errado.
A lógica de
(10-posição)+número de dias mod 7só funciona, tomando como base o mês anterior, para meses alternados como May, July, September e November; a regra das vogais parece mais uma mnemônica para lembrar em quais meses aplicar esse cálculo. Para os demais meses, parece-se usaritem+days mod 7do mês anterior, mas não está claro de onde essa interpretação é derivada no texto.Janeiro não tem mês anterior, então considera-se tudo como 0 e o resultado também fica 0. Não é preciso calcular sempre desde janeiro até o mês desejado; para os meses cujo início ou fim é uma vogal, dá para usar o atalho de que o número do item desse mês é
10-número do mês. Aqui,ynão conta como vogal. Ou talvez seja mais fácil simplesmente decorar.O algoritmo de Carroll evoluiu com o tempo. O First Sunday Doomsday Algorithm (https://firstsundaydoomsday.blogspot.com/2009/12/quick-start-guide.html) inclui melhorias publicadas até 2023, além da regra “odd+11” de Fong & Walters para calcular o código do ano: https://arxiv.org/abs/1010.0765
Tenho um texto que escrevi por achar que esta era uma forma mais intuitiva de calcular isso: https://gcanyon.wordpress.com/2013/04/09/a-better-way-to-calculate-the-day-of-the-week/
É realmente interessante ver Art Benjamin fazendo isso em uma palestra TED. Prestando atenção, dá para ver que ele acompanha os cálculos intermediários com gestos das mãos.
Depois que você entende, parece óbvio, mas é muito engenhoso. Começa em 7:47 em https://www.ted.com/talks/arthur_benjamin_a_performance_of_mathemagic
Calculando pelo método de Lewis Carroll a data de hoje, isto é, 24 de maio de 2024, fica assim. O item do século, por ser o século 20, é
20/4=5, resto 0,3-0=3,3×2=6.O item do ano é
24/12=2, resto 0, com 0 grupos de 4 ali dentro, então2+0+0=2. O item do mês, segundo o texto, é May=1, e o item do dia é 24. Somando tudo:6+2+1+24=33;33 mod 7 = 5, portanto é sexta-feira.Para quem diz que a notação não é importante, eu diria que toda a matemática era assim antes de se obter uma nova notação melhor.
Dá até para dizer que, em matemática, quase nada é mais importante do que a notação; e em ciência da computação é igual. É também por isso que linguagens da família Lisp são a escolha óbvia quando as variáveis são explícitas.
No início dos anos 1600 era “The white king commands his owne knight into the third house before his owne bishop.”; em meados dos anos 1700,
K. knight to His Bishop's 3d.; no início dos anos 1800,K.Kt. to B.third sq.; por volta de 1890,KKt-B3; em meados dos anos 1900,N-KB3; e hoje éNf3, ou♘f3se quiser evitar nomes de peças dependentes do idioma: https://www.knightschessclub.org/the_history_of_notation.htmlSe ele fazia em menos de 20 segundos, merece ser chamado de impressionante. Ele próprio não se considerava um calculista rápido.
Escrevi um script em Python para calcular o dia da semana e, ao inserir
2024-05-24, ele retorna Friday. O método soma o item do século, o item do ano, um array de itens dos meses e o item do dia, aplicando a correção de ano bissexto para janeiro e fevereiro.Tratei datas anteriores a 14 de setembro de 1752 de modo que usem um item de século separado.
Essas datas desaparecidas não foram eliminadas de forma uniforme no mundo todo, e o momento da adoção variava conforme o país e a religião do registrador; por isso, elas continuam sendo uma dor de cabeça em registros históricos.