Se você quer construir algo com um Raspberry Pi, provavelmente vai usar resistores. Para este exercício, você precisa saber duas coisas sobre eles:
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:
A partir do exemplo acima: brown-green deve retornar 15, e brown-green-violet também deve retornar 15, ignorando a terceira cor.
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:
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.)
Crie sua conta no Exercism para aprender e dominar Haskell com 107 exercícios e mentoria humana de verdade, tudo de graça.