Gigassegundo

Gigassegundo

Fácil

Introdução

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.

  • Uma receita pode explicar que tens de deixar os brownies no forno durante dois quilosegundos (ou seja, dois mil segundos).
  • Talvez tu e a tua família viajassem até um lugar exótico durante dois megassegundos (ou seja, dois milhões de segundos).
  • E se tu e o teu cônjuge estivessem casados há mil milhões de segundos, celebrariam o vosso aniversário de um gigassegundo.
Note

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.

Instruções

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.

Ler e escrever números longos

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:

  1. 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.

  2. 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.

Datas e horas em Python

Este exercício explora objetos do módulo datetime do Python:

Editar via GitHub A ligação abre numa nova janela ou separador
Python Exercism

Estás pronto para começar Gigassegundo?

Inscreve-te no Exercism para aprenderes e dominares Python com 17 conceitos146 exercícios, e mentoria humana real, tudo grátis.