Trilhas
/
Haskell
Haskell
/
Exercícios
/
Dupla de cores do resistor
Dupla de cores do resistor

Dupla de cores do resistor

Fácil

Instruções

Se você quer construir algo com um Raspberry Pi, provavelmente vai usar resistores. Para este exercício, você precisa saber duas coisas sobre eles:

  • Cada resistor tem um valor de resistência.
  • Resistores são pequenos, tão pequenos que, se você imprimisse o valor da resistência neles, seria difícil de ler.

Para contornar esse problema, os fabricantes imprimem faixas com código de cores nos resistores para indicar seus valores de resistência. Cada faixa tem uma posição e um valor numérico.

As duas primeiras faixas de um resistor seguem um esquema de codificação simples: cada cor corresponde a um único número. Por exemplo, se imprimissem uma faixa brown (valor 1) seguida de uma faixa green (valor 5), isso corresponderia ao número 15.

Neste exercício, você vai criar um programa útil para não precisar memorizar os valores das faixas. O programa vai receber nomes de cores como entrada e retornar um número de dois dígitos, mesmo que a entrada tenha mais de duas cores!

As cores das faixas são codificadas assim:

  • black: 0
  • brown: 1
  • red: 2
  • orange: 3
  • yellow: 4
  • green: 5
  • blue: 6
  • violet: 7
  • grey: 8
  • white: 9

A partir do exemplo acima: brown-green deve retornar 15, e brown-green-violet também deve retornar 15, ignorando a terceira cor.

Dicas

Você precisa implementar a função

value :: (Color, Color) -> Int

que aceita apenas duas cores e produz o componente numérico do valor da resistência do resistor.

Bônus - Testes de propriedades:

Este exercício é uma boa oportunidade para escrever alguns testes de propriedade. Se você nunca escreveu nenhum antes, aqui estão alguns recursos:

  1. School of Haskell.
  2. Real world Haskell

Fornecemos um exemplo de teste de propriedade com QuickCheck no arquivo de teste.

Exemplos de propriedades que podem ser testadas:

  • value (x, y) >= 10 para todo (x, y) em que x não é Black

  • Chamar show em value (x, y) produz a String com reverse aplicado à chamada de show em value (y, x).

  • Todas as cores têm nomes únicos. (Para quaisquer duas cores, se as cores forem diferentes, seus nomes também serão.)

Editar via GitHub O link abre em uma nova janela ou aba
Haskell Exercism

Tudo pronto para começar Dupla de cores do resistor?

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