Se queres construir algo com um Raspberry Pi, provavelmente vais usar resistências. Para este exercício, precisas de saber duas coisas sobre elas:
Para contornar este problema, os fabricantes imprimem nas resistências bandas codificadas por cores, para indicar os seus valores de resistência. Cada banda tem uma posição e um valor numérico.
As primeiras 2 bandas de uma resistência têm um esquema de codificação simples: cada cor corresponde a um único número. Por exemplo, se imprimissem uma banda brown (valor 1) seguida de uma banda green (valor 5), isso daria o número 15.
Neste exercício vais criar um programa útil para não teres de decorar os valores das bandas. O programa vai receber nomes de cores e devolver um número de dois algarismos, mesmo que receba mais do que duas cores!
As cores das bandas estão codificadas da seguinte forma:
A partir do exemplo acima: brown-green deve devolver 15, e brown-green-violet deve devolver 15 também, ignorando a terceira cor.
Este exercício pretende ser uma continuação de Resistor Color e assenta nele.
Ainda que possas resolver os exercícios de prática em qualquer ordem, incentivamos-te a seguir a sequência sugerida.
Neste exercício, recebes sintaxe para cores já predefinidas através do prefixo c*, por exemplo, c*black.
Tens depois de definir 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]].
É provável que esta tarefa exija que uses notações ou macros. Talvez queiras consultar uma referência.
Como a nova sintaxe é expandida em tempo de compilação, qualquer teste falharia a compilação a menos que toda a sintaxe necessária esteja definida.
Por esta razão, em vez de recorrer a testes tradicionais em tempo de execução, usamos #guard_msgs.
Este comando compara uma docstring dada com uma mensagem gerada por outro comando, neste caso #eval, e comunica um erro se forem diferentes.
Podes encarar a ausência de erro como um teste que passou.
Se trabalhares localmente ou no playground online do Lean, recebes feedback imediato sobre qualquer erro comunicado pelo #guard_msgs através do Lean InfoView.
Neste momento, o executor de testes online não suporta a importação da biblioteca completa de metaprogramação do Lean.
Embora sejas livre de usar quaisquer funcionalidades disponíveis no Lean por omissão, incluindo as que estão dentro do espaço de nomes Lean, acrescentar import Lean ou importar módulos específicos do espaço de nomes Lean vai fazer com que a tua submissão falhe quando a enviares para o Exercism.
Repara que importar a biblioteca Lean não é necessário para resolver este exercício.
Inscreve-te no Exercism para aprenderes e dominares Lean com 100 exercícios, e mentoria humana real, tudo grátis.