Relógio

Relógio

Médio

Instruções

Implementa um relógio que lida com horas, sem datas.

Deves conseguir adicionar e subtrair minutos ao relógio.

Dois relógios que representam a mesma hora devem ser iguais entre si.

Implementação

Para completar este exercício, tens de definir o tipo de dados Clock, adicionar uma instância de BEq e de ToString, e implementar as funções:

  • create, que recebe dois inteiros, possivelmente negativos, que representam as horas e os minutos, respetivamente, e cria um Clock válido.
  • add, que recebe um Clock e um número de minutos a adicionar ao tempo do Clock, gerando um novo Clock.
  • subtract, que recebe um Clock e um número de minutos a subtrair ao tempo do Clock, gerando um novo Clock.

Repara que o tipo Clock representa um relógio de 24 horas, que vai de "00:00" a "23:59".

Advanced

Repara que tanto as horas como os minutos de um Clock têm limites:

  • 0 <= hour < 24
  • 0 <= minute < 60

É idiomático em Lean representar estas restrições ao nível dos tipos, para que valores inválidos sejam irrepresentáveis. No entanto, isso também exige provar que um determinado valor satisfaz estas restrições.

Se te sentires à altura, aqui está uma boa introdução a este tópico:


Fonte

Sessão de programação em par com Erin Drummond
Editar via GitHub A ligação abre numa nova janela ou separador
Lean Exercism

Estás pronto para começar Relógio?

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