Trilhas
/
Clojure
Clojure
/
Exercícios
/
A lasanha deliciosa do Lucian
A lasanha deliciosa do Lucian

A lasanha deliciosa do Lucian

Exercício de aprendizagem

Introdução

Em Clojure, vincular um valor a um nome é chamado de var. Vars de nível superior (globais) são parecidas com constantes em outras linguagens.

Vars de nível superior são definidas usando def:

(def fingers 10)

fingers
;;=> 10

Você pode usar defn para definir uma função que recebe zero ou mais argumentos. Esta é uma função que somaria dois números:

(defn add [x y]
  (+ x y))

Essa função recebe dois argumentos, que são colocados no vetor [x y], seguidos pelo corpo da função, que pode conter qualquer número de expressões. O valor de retorno é sempre o resultado da avaliação da última expressão do corpo, (+ x y). Essa expressão é uma lista que representa uma chamada de função. O primeiro item da lista é a função +, que é avaliada usando os itens seguintes, x e y, como argumentos.

A função add definida acima é chamada da mesma forma:

(add 2 3)
;;=> 5

Funções e valores em Clojure só podem ser usados depois de serem definidos, ou seja, as formas são sempre avaliadas na ordem em que aparecem.

Em Clojure, os espaços em branco não têm significado além da formatação.

As funções e vars de Clojure são organizadas em namespaces. Um namespace agrupa funcionalidades relacionadas e é definido usando a macro ns:

(ns calculator)

(def pi 3.14)

(defn add [x y]
  (+ x y))

Clojure dá suporte a dois tipos de comentários. Comentários de uma linha são precedidos por ; e a forma comment é usada para impedir a avaliação de tudo que estiver entre (comment e ).

Instruções

Neste exercício você vai escrever um pouco de código para ajudar a preparar uma lasanha incrível a partir do seu livro de receitas favorito.

Você tem quatro tarefas, todas relacionadas ao tempo gasto preparando a lasanha.

1. Defina o tempo esperado no forno, em minutos

Defina a variável expected-time para verificar quantos minutos a lasanha deve ficar no forno. Segundo o livro de receitas, o tempo esperado no forno, em minutos, é 40:

expected-time
;;=> 40

2. Calcule o tempo restante no forno, em minutos

Defina a função remaining-time que recebe como argumento os minutos reais que a lasanha está no forno e retorna quantos minutos a lasanha ainda precisa ficar no forno, com base no tempo esperado no forno, em minutos, da tarefa anterior.

(remaining-time 30)
;;=> 10

3. Calcule o tempo de preparo, em minutos

Defina a função prep-time que recebe como argumento o número de camadas que você adicionou à lasanha e retorna quantos minutos você gastou preparando a lasanha, supondo que cada camada leve 2 minutos para preparar.

(prep-time 2)
;;=> 4

4. Calcule o tempo total de trabalho, em minutos

Defina a função total-time que recebe dois argumentos: o primeiro argumento é o número de camadas que você adicionou à lasanha, e o segundo argumento é o número de minutos que a lasanha está no forno. A função deve retornar quantos minutos no total você trabalhou preparando a lasanha, que é a soma do tempo de preparo em minutos com o tempo, em minutos, que a lasanha passou no forno até o momento.

(total-time 3 20)
;;=> 26
Editar via GitHub O link abre em uma nova janela ou aba
Clojure Exercism

Tudo pronto para começar A lasanha deliciosa do Lucian?

Crie sua conta no Exercism para aprender e dominar Clojure com 12 conceitos105 exercícios e mentoria humana de verdade, tudo de graça.