Tracks
/
Lean
Lean
/
Ejercicios
/
Dúo de colores de resistencia
Dúo de colores de resistencia

Dúo de colores de resistencia

Intermedia

Instrucciones

Si quieres construir algo con una Raspberry Pi, probablemente usarás resistencias. Para este ejercicio, necesitas saber dos cosas sobre ellas:

  • Cada resistencia tiene un valor de resistencia.
  • Las resistencias son pequeñas, tan pequeñas que si imprimieras el valor de resistencia en ellas, sería difícil de leer.

Para resolver este problema, los fabricantes imprimen franjas codificadas por color en las resistencias para indicar sus valores de resistencia. Cada franja tiene una posición y un valor numérico.

Las primeras 2 franjas de una resistencia tienen un esquema de codificación simple: cada color se asigna a un solo número. Por ejemplo, si imprimieran una franja de color brown (valor 1) seguida de una franja de color green (valor 5), se traduciría al número 15.

En este ejercicio vas a crear un programa útil para que no tengas que recordar los valores de las franjas. El programa recibirá nombres de colores como argumentos y devolverá un número de dos dígitos, ¡incluso si recibe más de dos colores!

Los colores de las franjas se codifican de la siguiente manera:

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

Del ejemplo anterior: brown-green debe devolver 15, y brown-green-violet también debe devolver 15, ignorando el tercer color.

Definir la sintaxis

Caution

Este ejercicio está pensado como continuación de Resistor Color y se basa en él. Aunque puedes resolver los ejercicios de práctica en cualquier orden, te recomendamos seguir la secuencia sugerida.

En este ejercicio, se te da la sintaxis de colores que ya están predefinidos con el prefijo c*, por ejemplo, c*black. Luego debes definir una sintaxis que asocie una secuencia de colores a un número, de acuerdo con las instrucciones. Los colores van entre *[[ y ]] y se separan con , , por ejemplo, *[[c*black, c*yellow, c*violet]].

Es probable que esta tarea requiera que uses notaciones o macros. Quizás quieras consultar una referencia.

Como la nueva sintaxis se expande en tiempo de compilación, cualquier prueba fallaría al compilar a menos que se defina toda la sintaxis requerida. Por esta razón, en lugar de depender de las pruebas tradicionales en tiempo de ejecución, usamos #guard_msgs. Este comando compara una docstring dada con un mensaje generado por otro comando, en este caso #eval, y reporta un error si son diferentes. Puedes considerar la ausencia de un error como una prueba superada.

Si trabajas localmente o en el entorno de pruebas en línea de Lean, recibirás retroalimentación instantánea sobre cualquier error que reporte #guard_msgs a través del InfoView de Lean.

Caution

Por ahora, el ejecutor de pruebas en línea no admite importar la biblioteca completa de metaprogramación de Lean. Aunque eres libre de usar cualquier funcionalidad disponible en Lean de forma predeterminada, incluidas las que están dentro del espacio de nombres Lean, agregar import Lean o importar módulos específicos del espacio de nombres Lean hará que tu envío falle cuando lo envíes a Exercism.

Ten en cuenta que no es necesario importar la biblioteca de Lean para resolver este ejercicio.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Lean Exercism

¿Todo listo para empezar Dúo de colores de resistencia?

Regístrate en Exercism para aprender y dominar Lean con 100 ejercicios y mentoría humana real, todo gratis.