Percursos
/
Elm
Elm
/
Exercícios
/
A lasanha maravilhosa do Mario
A lasanha maravilhosa do Mario

A lasanha maravilhosa do Mario

Exercício de aprendizagem

Introdução

Let

A expressão let serve para criar um âmbito local e é útil em algumas situações:

  • Para simplificar expressões
  • Para dar nome aos resultados de expressões intermédias
  • Para dividir uma expressão em partes mais pequenas, se estiver a ficar grande

Podes fazer quase tudo dentro de uma expressão let, incluindo desestruturação (mais detalhes sobre isto em exercícios posteriores), mas não é possível definir um novo Tipo Personalizado nem um Sinónimo de Tipo.

let
  cube x = x * x * x
in
  cube a + cube b + cube c
beginWithPattern : Size -> Padding -> Pattern -> GameOfLife
beginWithPattern minimumSize padding pattern =
    let
        size = calculateSize minimumSize padding pattern

        center = Size.center size

        centeredPattern = Pattern.centerAt center pattern

        dimensions = { width = size, height = size }

        deadCells = Matrix.create dimensions Dead
    in
    GameOfLife (bringPatternToLife deadCells centeredPattern)

Instruções

Recebeste um livro de receitas novo no teu aniversário e queres saber se a receita de lasanha que lá está é melhor do que a do teu livro de receitas preferido de momento. Neste exercício vais escrever algum código para te ajudar a cozinhar a lasanha do livro novo.

A tua colega de casa ainda está ocupada no escritório e quer saber a que horas a lasanha vai estar pronta, para garantir que volta a tempo.

1. Descobre a que horas a lasanha vai estar pronta

Cria uma função para descobrir a que horas a lasanha vai estar pronta. Para que o código seja simples e expressivo, deves usar uma expressão let.

Define a função remainingTimeInMinutes, que recebe dois parâmetros e tem uma expressão let como corpo. O primeiro parâmetro é o número de camadas da lasanha, e o segundo é o número de minutos desde que começaste a cozinhar.

Define expectedMinutesInOven (na parte let da expressão let) para verificar quantos minutos a lasanha deve estar no forno. Segundo o livro de receitas, o tempo esperado no forno, em minutos, é 40:

expectedMinutesInOven
    --> 40

Define preparationTimeInMinutes (na parte let da expressão let), que recebe o número de camadas da lasanha como parâmetro e devolve quantos minutos demora a preparar a lasanha, assumindo que cada camada demora 2 minutos a preparar.

preparationTimeInMinutes 3
    --> 6

Devolve quantos minutos faltam até a lasanha estar pronta (na parte in da expressão let), que é a soma de preparationTimeInMinutes com expectedMinutesInOven, menos o número de minutos desde que começaste a cozinhar.

remainingTimeInMinutes 3 10
    --> 6 + 40 - 10 = 36
Editar via GitHub A ligação abre numa nova janela ou separador
Elm Exercism

Estás pronto para começar A lasanha maravilhosa do Mario?

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