Si quieres construir algo usando una Raspberry Pi, probablemente uses 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 de hecho que, si imprimieras en ellas el valor de la resistencia, sería difícil de leer. Para sortear este problema, los fabricantes imprimen en las resistencias bandas codificadas por colores que indican sus valores de resistencia.
Cada banda actúa como un dígito de un número. Por ejemplo, si imprimieran una banda de color brown (valor 1) seguida de una banda de color green (valor 5), se traduciría al número 15. En este ejercicio, vas a crear un programa útil para no tener que recordar los valores de las bandas. El programa tomará 3 colores como entrada y dará como salida el valor correcto, en ohms. 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 Resistor Color Duo descifraste los dos primeros colores.
Por ejemplo: orange-orange daba el valor principal 33.
El tercer color indica cuántos ceros hay que añadir al valor principal.
El valor principal más los ceros nos da un valor en ohms.
Para el ejercicio no importa lo que sean realmente los ohms.
Por ejemplo:
(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 dicho en lenguaje llano en lugar de jerga matemática.)
Este ejercicio consiste en traducir los colores a una etiqueta:
"... ohms"
Así, una entrada de "orange", "orange", "black" debería devolver:
"33 ohms"
Cuando llegamos a resistencias más grandes, se usa un prefijo métrico para indicar una magnitud mayor de ohms, como «kiloohms». Es similar a decir «2 kilómetros» en lugar de «2000 metros», o «2 kilogramos» para «2000 gramos».
Por ejemplo, una entrada de "orange", "orange", "orange" debería devolver:
"33 kiloohms"
Este ejercicio está pensado como una continuación de Resistor Color Duo y se basa en él.
Aunque puedes resolver los ejercicios de práctica en cualquier orden, te animamos a seguir la secuencia sugerida.
En este ejercicio, se te da una sintaxis para los colores ya predefinida usando el prefijo c*, p. ej., c*black.
A continuación, debes definir una sintaxis que asocie una secuencia de colores a 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 separados por , , p. ej., *[[c*black, c*yellow, c*violet]].
Esta tarea probablemente te exija usar notaciones o macros. Quizá te interese consultar una referencia.
Como la sintaxis nueva se expande en tiempo de compilación, cualquier prueba fallaría al compilar a menos que se defina toda la sintaxis necesaria.
Por este motivo, en lugar de depender de 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, e informa de un error si son diferentes.
Puedes considerar la ausencia de un error como una prueba superada.
Si trabajas en local o en el entorno de pruebas en línea de Lean, obtendrás comentarios instantáneos sobre cualquier error que notifique #guard_msgs a través de Lean InfoView.
El valor de resistencia debe mostrarse usando la unidad Ω (ohm).
Este carácter Unicode puede generarse en local o en el entorno de pruebas en línea de Lean con el atajo \ohm.
Si trabajas en el editor en línea de Exercism, no dudes en copiar el carácter de las instrucciones.
El ejecutor de pruebas en línea no admite actualmente la importación de la biblioteca completa de metaprogramación de Lean.
Aunque puedes usar libremente cualquier funcionalidad disponible en Lean por defecto, incluidas las que están dentro del espacio de nombres Lean, añadir import Lean o importar módulos concretos del espacio de nombres Lean hará que tu envío falle al enviarlo a Exercism.
Ten en cuenta que importar la biblioteca de Lean no es necesario para resolver este ejercicio.
Regístrate en Exercism para aprender y dominar Lean con 100 ejercicios y mentoría humana real, todo gratis.