1 pontos por GN⁺ 2024-05-26 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2024-05-26
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 como 144 / 025 / 036 / 146, e, se necessário, também podem ser calculados a partir do princípio.

    • 144 : Jan, Feb, Mar deve ser entendido como Jan=1, Feb=4, Mar=4.
    • Consegui memorizar essa explicação imediatamente. Porém, ao testar 7 de fevereiro de 2032, obtive 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.
    • Combinar memorização e cálculo é útil. 0, 1, -1, 0, 0, 1, 1, 2, 3, 3, 4, 4 sã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 por Magic(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 fica 2×12+4-1 ≡ 6 (mod 7). Inversamente, também é possível recuperar os deslocamentos a partir dos números mágicos memorizados calculando Magic(n)-2n-c, bastando lembrar que o intervalo dos deslocamentos é [-1,4].
    • O método de Lewis Carroll parece muito mais simples e rápido; não sei bem que vantagem este método tem sobre ele, e a complexidade parece ter aumentado bastante.
  • 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.

  • É 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.

    • Parece que January é um valor fixo 0, February e March são valores fixos 3, e December também deve ser visto como um valor fixo dado diretamente no texto.
      A lógica de (10-posição)+número de dias mod 7 só 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 usar item+days mod 7 do mês anterior, mas não está claro de onde essa interpretação é derivada no texto.
    • Eu também travei nessa parte, e o entendimento mais plausível para mim é este: o número do item de cada mês pode ser calculado somando ao número do item do mês anterior o número de dias do mês anterior e tirando mod 7.
      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, y não conta como vogal. Ou talvez seja mais fácil simplesmente decorar.
    • Eu tive o mesmo problema e tentei várias reinterpretações da fórmula, mas nada ajudou.
  • 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ão 2+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.

    • Eu esperava que explicassem em detalhes a parte em que o item do mês vira May=1. Mesmo lendo a explicação, não consigo entender de jeito nenhum.
  • 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 xadrez também foi assim. Pense em um lance em que as brancas, no primeiro movimento, movem o cavalo mais próximo do rei branco para a casa que fica duas casas à frente e uma à esquerda a partir da posição inicial; do século XVII até hoje, a notação desse lance foi ficando cada vez mais curta.
      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 ♘f3 se quiser evitar nomes de peças dependentes do idioma: https://www.knightschessclub.org/the_history_of_notation.html
  • Se ele fazia em menos de 20 segundos, merece ser chamado de impressionante. Ele próprio não se considerava um calculista rápido.

    • O padrão de comparação dele provavelmente eram outros professores que ensinavam matemática em Oxbridge.
  • 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.

    • Incluir 1752 é complicado. No Império Britânico, ao adotar o calendário gregoriano, os dias de 3 a 13 de setembro foram pulados, tornando aquele o único ano com apenas 355 dias.
      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.