1 pontos por GN⁺ 2024-05-26 | 1 comentários | Compartilhar no WhatsApp

O método de cálculo de datas proposto por Lewis Carroll

Carta enviada por Lewis Carroll à Nature em 31 de março de 1887:

Descobri um método pelo qual é possível calcular mentalmente o dia da semana de uma data dada, e achei que poderia interessar aos leitores. Não sou um calculista rápido, e em média levo cerca de 20 segundos para resolver esse tipo de problema. Portanto, estou certo de que um calculista rápido não levaria nem 15 segundos.

Método de cálculo

  • Divida a data dada em 4 partes: século, ano, mês e dia.
  • Calcule os 4 itens a seguir e some cada item ao total acumulado anterior. Se um item ou o total exceder 7, divida por 7 e mantenha apenas o resto.

Item do século

  • Estilo antigo (antes de 2 de setembro de 1752): subtraia de 18.
  • Estilo novo (depois de 14 de setembro de 1752): divida por 4, subtraia o resto de 3 e depois multiplique o resultado por 2.
  • Ex.: no caso de 1811, o item do século é 18.

Item do ano

  • Some os múltiplos de 12, o resto e os múltiplos de 4 do resto.

Item do mês

  • Se começar ou terminar com vogal, subtraia a posição do mês de 10. Some a esse valor o número de dias do mês correspondente.
  • Ex.: o item de janeiro é '0', fevereiro ou março é '3', dezembro é '12'.
  • Valor final: janeiro 0, fevereiro 3, março 3, abril 6, maio 1, junho 4, julho 6, agosto 2, setembro 5, outubro 0, novembro 3, dezembro 5.

Item do dia

  • O dia do mês correspondente.

Ajuste de ano bissexto

  • Se for janeiro ou fevereiro de um ano bissexto, subtraia '1' do total final. Se o total for '0', some 7 antes.
  • Ano bissexto: ano divisível por 4, exceto no estilo novo quando o ano secular não é divisível por 4 (ex.: 1800).

Resultado final

  • O resultado final indica o dia da semana. '0' é domingo, '1' é segunda-feira, e assim por diante.

Exemplos

18 de setembro de 1783

  • Item do século: 17 dividido por 4 dá resto '1'. 3 menos 1 dá '2'. 2 multiplicado por 2 dá '4'.
  • Item do ano: 83 são 6 dúzias e 11, total 17. Somando 2, dá 19, que dividido por 7 dá '5'. Total 9, que dividido por 7 dá '2'.
  • Item do mês: o item de agosto é '10 menos 8', isto é, '2'. O item de setembro é '2 mais 3', isto é, '5'. Total 7, que dividido por 7 dá '0'.
  • Item do dia: 18 é '4'.
  • Resultado final: 'quinta-feira'.

23 de fevereiro de 1676

  • Item do século: 18 menos 16 dá '2'.
  • Item do ano: 76 são 6 dúzias e 4, total 10. Somando 1, dá 11, que dividido por 7 dá '4'. Total '6'.
  • Item do mês: o item de fevereiro é '3'. Total 9, que dividido por 7 dá '2'.
  • Item do dia: 23 é '2'. Total '4'.
  • Ajuste de ano bissexto: '3'.
  • Resultado final: 'quarta-feira'.

(Fonte: Edward Wakeling, Rediscovered Lewis Carroll Puzzles, 1995.)

Opinião do GN⁺

  • O método de cálculo de datas de Lewis Carroll é útil para desenvolver o raciocínio matemático.
  • É uma maneira interessante de calcular datas sem computador.
  • Entender detalhes como o cálculo de anos bissextos pode levar a resultados mais precisos.
  • Também pode ser divertido compará-lo com cálculos modernos de calendário.
  • Para quem gosta de quebra-cabeças matemáticos, isso pode ser um desafio interessante.

1 comentários

 
GN⁺ 2024-05-26
Comentários no Hacker News

Resumo da coletânea de comentários do Hacker News

  • Usuário A: Este método é muito semelhante ao que eu uso, e também é usado por Art Benjamin. Dá para fazer em 10 a 15 segundos, mas exige prática, um pouco de memorização e aritmética simples. Depois que você aprende essa técnica, ela é muito útil.

    • Exemplo: cálculo do dia da semana de 24 de maio de 2024
      12 anos desde 2012
      3 anos bissextos
      número mágico do mês 2
      dia 24
      resto da soma ao dividir por 7: sexta-feira
      
  • Usuário B: JH Conway usava outra técnica, que é mais rápida e fácil para calcular o dia da semana no ano atual. No entanto, há dificuldade ao calcular o "Doomsday" de outros anos, então acaba voltando ao método básico.

  • Usuário C: Achei interessante ler sobre a diferença entre o calendário antigo e o novo em 1752. No século 18, o ano legal na Inglaterra começava em 25 de março.

  • Usuário D: Estou tendo dificuldade para entender o algoritmo de cálculo do número do mês. Explica como calcular o número de cada mês e aponta que sua tentativa não bate com o resultado apresentado no artigo.

  • Usuário E: O algoritmo de Carroll evoluiu com o tempo. Apresenta o First Sunday Doomsday Algorithm, incluindo melhorias mais recentes.

  • Usuário F: Escrevi um post de blog explicando um método mais simples. Dá para ver os detalhes pelo link.

  • Usuário G: Foi muito interessante ver Art Benjamin demonstrar essa técnica em uma palestra no TED. Dá para acompanhar os cálculos intermediários pelos movimentos das mãos dele.

  • Usuário H: Calcula o dia da semana de 24 de maio de 2024 usando o método de Lewis Carroll.

    • Exemplo:
      item do século: 6
      item do ano: 2
      item do mês: 1
      item do dia: 24
      total: sexta-feira
      
  • Usuário I: Compartilha uma forma de calcular o dia da semana de uma data usando código Python.

    def compute_day_of_week(date):
        day, month, year = date
        century = year // 100
        year_part = year % 100
    
        # Calculate century item
        if year < 1752 or (year == 1752 and (month < 9 or (month == 9 and day < 14))):
            century_item = (18 - century) % 7
        else:
            century_item = ((3 - (century % 4)) * 2) % 7
    
        # Calculate year item
        year_item = (year_part + (year_part // 4)) % 7
    
        # Calculate month item
        month_items = [0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5]
        month_item = month_items[month - 1]
    
        # Calculate day item
        day_item = day % 7
    
        # Total
        total = (century_item + year_item + month_item + day_item) % 7
    
        # Leap year adjustment
        if month <= 2 and (year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)):
            total = (total - 1 + 7) % 7
    
        return total
    
    def day_of_week_string(day_index):
        days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
        return days[day_index]
    
    # Get date input
    date_input = input("Enter a date (yyyy-mm-dd): ")
    year, month, day = map(int, date_input.split('-'))
    date = (day, month, year)
    
    # Calculate and print day of week
    day_index = compute_day_of_week(date)
    day_name = day_of_week_string(day_index)
    print(f"The day of the week for {date_input} is {day_name}.")
    
  • Usuário J: Enfatiza o quanto a notação é importante na matemática. Menciona que a notação é um elemento muito importante tanto na matemática quanto na ciência da computação.

  • Usuário K: Se alguém conseguir fazer isso em menos de 20 segundos, já é impressionante. Eu nunca me considerei uma "calculadora rápida".