Tracks
/
Lean
Lean
/
Ejercicios
/
Trío de colores de resistencia
Trío de colores de resistencia

Trío de colores de resistencia

Intermedia

Instrucciones

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

  • Cada resistencia tiene un valor de resistencia.

  • Las resistencias son pequeñas, tan pequeñas que si imprimieras el valor de la resistencia en ellas, sería difícil de leer. Para solucionar este problema, los fabricantes imprimen bandas codificadas por colores sobre las resistencias para indicar sus valores de resistencia.

  • Cada banda actúa como un dígito de un número. Por ejemplo, si imprimieran una banda brown (valor 1) seguida de una banda 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 bandas. El programa tomará 3 colores como entrada y devolverá el valor correcto, en ohmios. Las bandas de color 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

En Dúo de colores de resistencias descifraste los dos primeros colores. Por ejemplo: orange-orange daba el valor principal 33. El tercer color indica cuántos ceros hay que agregar al valor principal. El valor principal más los ceros nos da un valor en ohmios. Para el ejercicio no importa qué son en realidad los ohmios. Por ejemplo:

  • orange-orange-black sería 33 y ningún cero, lo que da 33 ohms.
  • orange-orange-red sería 33 y 2 ceros, lo que da 3300 ohms.
  • orange-orange-orange sería 33 y 3 ceros, lo que da 33000 ohms.

(Si las matemáticas son lo tuyo, quizá quieras pensar en los ceros como exponentes de 10. Si las matemáticas no son lo tuyo, quédate con los ceros. En realidad es lo mismo, solo que en palabras sencillas en lugar de jerga matemática.)

Este ejercicio consiste en traducir los colores a una etiqueta:

«... ohms»

Así que una entrada de "orange", "orange", "black" debería devolver:

«33 ohms»

Cuando pasamos a resistencias más grandes, se usa un prefijo métrico para indicar una magnitud mayor de ohmios, como «kiloohms». Es similar a decir «2 kilómetros» en lugar de «2000 metros», o «2 kilogramos» por «2000 gramos».

Por ejemplo, una entrada de "orange", "orange", "orange" debería devolver:

«33 kiloohms»

Definir sintaxis

Caution

Este ejercicio está pensado como una continuación de Resistor Color Duo y se apoya 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 ya predefinidos usando el prefijo c*, por ejemplo, c*black. Luego debes definir una sintaxis que asocie una secuencia de colores con un valor de resistencia junto con su unidad del SI, posiblemente con un prefijo métrico, según las instrucciones. Los colores están entre *[[ y ]] y se separan con , , por ejemplo, *[[c*black, c*yellow, c*violet]].

Es probable que esta tarea te exija usar 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 necesaria. Por esta razón, en lugar de apoyarnos en las pruebas tradicionales en tiempo de ejecución, usamos #guard_msgs. Este comando compara un docstring dado 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 de forma local o en el playground en línea de Lean, obtendrás retroalimentación instantánea sobre cualquier error que reporte #guard_msgs a través de Lean InfoView.

Note

El valor de la resistencia debe mostrarse usando la unidad Ω (ohm). Este carácter unicode se puede generar de forma local o en el playground en línea de Lean con el atajo \ohm. Si estás trabajando en el editor en línea de Exercism, puedes copiar el carácter directamente de las instrucciones.

Caution

Actualmente, el ejecutor de pruebas en línea no admite importar la biblioteca completa de metaprogramación de Lean. Si bien puedes usar libremente cualquier funcionalidad disponible en Lean de forma predeterminada, incluidas las 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 al enviarlo 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 Trío de colores de resistencia?

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