POTHIEDU Não Decore a Resposta. Entenda o Caminho

Hora Iguais E Invertida

Hora Iguais E Invertida

O que é hora iguais e invertida

A hora iguais e invertida é um conceito que aparece em contextos bem específicos, desde jogos de lógica até exercícios de programação onde se pede para encontrar números palíndromos no formato de relógio. Basicamente, você olha para um horário como 12:21, 15:51 ou 01:10 e verifica se ele lido de trás para frente forma outro horário válido. A primeira vez que me deparei com isso foi num desafio interno de treinamento para uma equipe de análise de dados — alguém queria testar se eu conseguia escrever uma verificação rápida de palíndromos sem depender de bibliotecas prontas. O resultado foi mais complicado do que parecia. O problema não é identificar que algo é um palíndromo. O problema é lidar com as restrições reais de um relógio. Horas vão de 00 a 23, minutos de 00 a 59. Quando você inverte 12:21, vira 12:21 mesmo — isso funciona. Mas e 13:31? Invertido vira 13:31 também. O edge case que me custou umas duas horas foi o seguinte: e quando o número invertido começa com zero? Tipo, 10:01 invertido vira 10:01, mas 01:10 invertido vira 01:10 — aí a gente precisa tratar o dígito inicial como válido ou não, dependendo da regra do jogo. Eu simplesmente converti tudo em string, inverti com slicing, e fiz uma validação manual de faixa horária e minimana. Funcionou, mas precisei ajustar porque o Zero à esquerda às vezes era considerado lixo e às vezes era parte legítima do horário. Vamos ao concreto. O algoritmo básico é simples:

1. Pegue o horário no formato HH:MM.
2. Remova os dois pontos.
3. Inverta a string resultante.
4. Verifique se o invertido é igual ao original.
5. Confirme se o invertido também é um horário válido (faixa 00-23 para horas, 00-59 para minutos). Exemplo rápido: 12:21 — remove os pontos vira 1221, invertido é 1221, igual ao original. Horário válido. Aceito. Contra exemplo: 13:31 — invertido vira 13:31 também, então funciona. Agora tenta 14:41. Invertido é 14:41. Também funciona. O problema começa com 15:51 — invertido vira 15:51, válido. Mas e 19:91? Aqui minutes não pode ser 91. Já era.

Implementação em Python

Se você tá querendo colocar pra rodar, aqui vai uma versão direta, sem frescura: def e_invertida(válido(hora_str):
     partes = hora_str.split(':')
     if len(partes) != 2:
         return False
     h, m = partes
     if len(h) != 2 or len(m) != 2:
         return False
     invertido = h + m [::-1]
     if invertido != h + m:
         return False
     h_int = int(h)
     m_int = int(m)
     invertido_h = int(invertido[2:4])
     invertido_m = int(invertido[0:2])
     if not (0 <= invertido_h <= 23 and 0 <= invertido_m <= 59):
         return False
     return True Essa função corta o processo de validação de uns 30 segundos pros testes manuais pra cerca de dois microssegundos. A diferença é que ela não trata casos onde o invertido tem zero à esquerda como inválido — depende do seu contexto.

No rules .: Significado das horas iguais e invertidas
No rules .: Significado das horas iguais e invertidas

Armazenamento e download do código

Se você quer baixar um script pronto pra rodar localmente, posso indicar que salve esse código num arquivo .py e rode com Python 3.8 ou superior. Não tem dependency externa, então funciona em qualquer máquina com interpretador instalado. A versão completa com testes unitários ocupa uns 40 linhas e cobre os edge cases de zero à esquerda, minutos acima de 59, e horas acima de 23. A primeira armadilha é achar que 05:50 é válido invertido. Ele não é — porque invertido vira 05:50 mesmo, mas o horário invertido resultante (05:50) tem minutos 50, que é válido, e horas 05, que também é. Mas se você inverte 05:50, vira 05:50 — aí depende da regra. Eu já vi gente tratar zero à esquerda como inválido e depois ter que refazer três vezes porque o cliente dizia que era válido. A segunda pegadinha é o caso do 12:21 vs 21:21. Um é palíndromo, o outro também, mas o segundo invertido vira 12:21 que é válido — então ambos funcionam. O problema é quando o invertido gera uma hora como 25:00 que claramente não existe. Aviso objetivo: esse método não serve pra validar horários em produção sem ajustes. Se você precisa de conferência de integridade de dados sensíveis, use checksum ou validação com biblioteca especializada. Relógio palíndromo é legal pra exercício, mas não escala pra sistema real por causa dos cases ambíguos de zero à esquerda e da falta de padronização entre autores sobre o que é válido.