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.
Este exercício é uma continuação de Resistor Color e se apoia nele.
Embora você possa resolver os exercícios de prática em qualquer ordem, recomendamos seguir a sequência sugerida.
Neste exercício, você recebe a sintaxe de cores já predefinidas usando o prefixo c*, por exemplo, c*black.
Você deve então definir uma sintaxe que associe uma sequência de cores a um número, de acordo com as instruções.
As cores ficam entre *[[ e ]] e são separadas por , , por exemplo, *[[c*black, c*yellow, c*violet]].
Esta tarefa provavelmente vai exigir que você use notações ou macros. Talvez você queira consultar uma referência.
Como uma nova sintaxe é expandida em tempo de compilação, qualquer teste falharia na compilação se toda a sintaxe necessária não estivesse definida.
Por esse motivo, em vez de contar com os testes tradicionais de tempo de execução, usamos #guard_msgs.
Esse comando compara uma docstring fornecida com uma mensagem gerada por outro comando, neste caso #eval, e relata um erro se elas forem diferentes.
Você pode considerar a ausência de erro como um teste que passou.
Se você trabalhar localmente ou no playground online do Lean, receberá feedback instantâneo sobre qualquer erro relatado pelo #guard_msgs através do InfoView do Lean.
No momento, o executor de testes online não oferece suporte à importação da biblioteca completa de metaprogramação do Lean.
Você tem liberdade para usar qualquer recurso disponível no Lean por padrão, incluindo os que estão no namespace Lean, mas adicionar import Lean ou importar módulos específicos do namespace Lean fará sua submissão falhar quando você enviá-la para o Exercism.
Repare que não é necessário importar a biblioteca do Lean para resolver este exercício.
Crie sua conta no Exercism para aprender e dominar Lean com 100 exercícios e mentoria humana de verdade, tudo de graça.