A forma como medimos o tempo é um bocado confusa. Um minuto tem 60 segundos e uma hora tem 60 minutos. Isto vem da antiga Babilónia, onde o 60 era a base do sistema de numeração. Um dia tem 24 horas, uma semana tem 7 dias, e quantos dias tem um mês? Bom, o número de dias de um mês depende não só do mês em questão, mas também do tipo de calendário usado no país onde vives.
E se, em vez disso, usássemos apenas segundos para expressar intervalos de tempo? Assim, podemos usar os prefixos do sistema métrico para escrever grandes números de segundos em quantidades mais fáceis de compreender.
Se algum dia colonizarmos Marte ou outro planeta qualquer, medir o tempo vai ficar ainda mais confuso. Quando alguém diz «ano», está a referir-se a um ano na Terra ou a um ano em Marte?
A ideia para este exercício veio do romance de ficção científica "A Deepness in the Sky", do autor Vernor Vinge. Nele, o autor usa o sistema métrico como base para medir o tempo.
A tua tarefa é determinar a data e a hora um gigassegundo depois de uma determinada data.
Um gigassegundo é mil milhões de segundos. Ou seja, é o número um seguido de nove zeros.
Se tivesses nascido a 24 de janeiro de 2015, às 22:00 (10:00:00 da noite), a 2 de outubro de 2046, às 23:46:40 (11:46:40 da noite), terias um gigassegundo de idade.
O código é lido mais vezes do que escrito, e ler um número grande ou comprido no meio de outro texto pode ser um desafio. Eis duas formas de tornar os números mais legíveis:
Usar underscores em literais numéricos. 1_000_000 é mais legível do que 1000000, e 10_100_201_330 é mais fácil de ler rapidamente do que 10100201330. Para mais informações, consulta PEP-0515.
Usar notação exponencial ou notação científica. O caráter e (ou E) seguido de um número inteiro representa a potência de 10 pela qual se deve multiplicar o número que vem antes do e (ou seja: 1e6, o 1 é multiplicado por 10 elevado à potência de 6, o que dá 1000000). Para mais detalhes, vê esta referência sobre notação científica.
Este exercício explora objetos do módulo datetime do Python:
Inscreve-te no Exercism para aprenderes e dominares Python com 17 conceitos146 exercícios, e mentoria humana real, tudo grátis.