Percursos
/
Clojure
Clojure
/
Exercícios
/
Carros, à montagem!
Carros, à montagem!

Carros, à montagem!

Exercício de aprendizagem

Introdução

Os números em Clojure incluem:

  • Números inteiros: números sem algarismos depois do separador decimal (números sem casas decimais). Por exemplo: -6, 0, 1, 25, 976 e 500000.
  • Números de vírgula flutuante: números com zero ou mais algarismos depois do separador decimal. Por exemplo: -2.4, 0.1, 3.14, 16.984025 e 1024.0.

Dois tipos numéricos comuns são int e float. Um int é um número inteiro de 32 bits e um float é um número de vírgula flutuante de 64 bits.

A aritmética é feita com os operadores aritméticos habituais. Os números podem ser comparados com os operadores de comparação numérica habituais (>, <, <=, >=), o operador de igualdade (=) e o operador de desigualdade (not=).

Neste exercício, tens de executar lógica de forma condicional. Uma forma comum de o fazer em Clojure é usar cond:

(cond (= x 5) "Expression to evaluate when x equals 5"
      (> x 7) "Expression to evaluate when x is greater than 7"
      :else   "Expression to evaluate in all other cases")

Nota

O operador == pode ser preferível ao = em alguns casos em que é preciso comparar números independentemente do tipo exato. Por exemplo,

(== 5.0 5) ;; true as both numbers are equal when type is ignored
(= 5.0 5) ;; false as the types of numbers are also taken into account here i.e. float is different from int

O guia do Clojure sobre igualdade, mais concretamente a secção sobre números, tem mais detalhes.

Instruções

Neste exercício vais escrever código para analisar a produção de uma linha de montagem numa fábrica de automóveis. A velocidade da linha de montagem pode variar entre 0 (desligada) e 10 (máxima).

À velocidade mais baixa (1), são produzidos 221 automóveis por hora. A produção aumenta linearmente com a velocidade. Por isso, com a velocidade definida para 4, devem produzir-se 4 * 221 = 884 automóveis por hora. No entanto, velocidades mais altas aumentam a probabilidade de se produzirem automóveis com defeito, que depois têm de ser descartados. A tabela seguinte mostra como a velocidade influencia a taxa de sucesso:

  • 0: taxa de sucesso de 0%.
  • 1 a 4: taxa de sucesso de 100%.
  • 5 a 8: taxa de sucesso de 90%.
  • 9: taxa de sucesso de 80%.
  • 10: taxa de sucesso de 77%.

Tens duas tarefas.

1. Calcula a taxa de produção por hora

Implementa a função production-rate para calcular a taxa de produção por hora da linha de montagem, tendo em conta a sua taxa de sucesso:

(production-rate 6)
;;=> 1193.4

Repara que o valor devolvido é um double.

2. Calcula o número de unidades funcionais produzidas por minuto

Implementa a função working-items para calcular quantos automóveis funcionais são produzidos por minuto:

(working-items 6)
;;=> 19

Repara que o valor devolvido é um int.

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

Estás pronto para começar Carros, à montagem!?

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