Trilhas
/
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 é usada para criar um escopo local e é útil em algumas situações:

  • Para simplificar expressões
  • Para nomear os resultados de expressões intermediárias
  • Dividir uma expressão em partes menores quando ela está ficando grande

Você pode fazer quase tudo dentro de uma expressão let, incluindo desestruturação (mais detalhes sobre isso em exercícios posteriores), mas não é possível definir um novo Custom Type ou Type Alias.

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

Você ganhou um livro de receitas novo de aniversário e quer descobrir se a receita de lasanha dele é melhor que a do seu livro de receitas favorito atual. Neste exercício, você vai escrever um código para ajudar a cozinhar a lasanha do livro novo.

Sua colega de casa ainda está ocupada no escritório e quer saber a que horas a lasanha vai ficar pronta, para ter certeza de que volta a tempo.

1. Descubra a que horas a lasanha vai ficar pronta

Crie uma função para descobrir a que horas a lasanha vai ficar pronta. Para deixar o código simples e expressivo, você deve usar uma expressão let.

Defina 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 você começou a cozinhar.

Defina expectedMinutesInOven (na parte let da expressão let) para verificar quantos minutos a lasanha deve ficar no forno. De acordo com o livro de receitas, o tempo esperado no forno em minutos é 40:

expectedMinutesInOven
    --> 40

Defina preparationTimeInMinutes (na parte let da expressão let), que recebe o número de camadas da lasanha como parâmetro e retorna quantos minutos leva para preparar a lasanha, supondo que cada camada leva 2 minutos para preparar.

preparationTimeInMinutes 3
    --> 6

Retorne quantos minutos faltam até a lasanha ficar pronta (na parte in da expressão let), que é a soma de preparationTimeInMinutes e expectedMinutesInOven menos o número de minutos desde que você começou a cozinhar.

remainingTimeInMinutes 3 10
    --> 6 + 40 - 10 = 36
Editar via GitHub O link abre em uma nova janela ou aba
Elm Exercism

Tudo pronto para começar A lasanha maravilhosa do Mario?

Crie sua conta no Exercism para aprender e dominar Elm com 28 conceitos110 exercícios e mentoria humana de verdade, tudo de graça.