Si tu veux construire quelque chose avec un Raspberry Pi, tu utiliseras sans doute des résistances. Pour cet exercice, tu n'as besoin de connaître que trois choses à leur sujet :
Chaque résistance a une valeur de résistance.
Les résistances sont petites. Si petites, en fait, qu'y imprimer leur valeur de résistance la rendrait difficile à lire. Pour contourner ce problème, les fabricants impriment sur les résistances des bandes de couleur codées pour indiquer leur valeur de résistance.
Chaque bande représente un chiffre d'un nombre. Par exemple, si on imprimait une bande brown (valeur 1) suivie d'une bande green (valeur 5), cela donnerait le nombre 15. Dans cet exercice, tu vas créer un programme bien pratique pour ne plus avoir à retenir les valeurs des bandes. Le programme prend 3 couleurs en entrée et renvoie la valeur correcte, en ohms. Les bandes de couleur sont codées comme suit :
black : 0
brown : 1
red : 2
orange : 3
yellow : 4
green : 5
blue : 6
violet : 7
grey : 8
white : 9
Dans l'exercice Duo de couleurs de résistance, tu as décodé les deux premières couleurs.
Par exemple : orange-orange donnait la valeur principale 33.
La troisième couleur indique combien de zéros il faut ajouter à la valeur principale.
La valeur principale à laquelle on ajoute les zéros donne une valeur en ohms.
Pour cet exercice, peu importe ce que sont vraiment les ohms.
Par exemple :
(Si les maths sont ton truc, tu peux voir les zéros comme des exposants de 10. Si les maths ne sont pas ton truc, contente-toi des zéros. C'est vraiment la même chose, juste en langage courant plutôt qu'en jargon mathématique.)
Cet exercice consiste à traduire les couleurs en une étiquette :
« ... ohms »
Ainsi, une entrée de "orange", "orange", "black" doit renvoyer :
« 33 ohms »
Pour des résistances plus grandes, on utilise un préfixe du Système international pour indiquer un ordre de grandeur plus élevé en ohms, comme « kiloohms ». C'est un peu comme dire « 2 kilomètres » au lieu de « 2000 mètres », ou « 2 kilogrammes » pour « 2000 grammes ».
Par exemple, une entrée de "orange", "orange", "orange" doit renvoyer :
« 33 kiloohms »
Cet exercice est conçu comme la suite de Resistor Color Duo et s'appuie sur lui.
Bien que tu puisses résoudre les exercices d'entraînement dans n'importe quel ordre, on t'encourage à suivre l'ordre suggéré.
Dans cet exercice, une syntaxe pour les couleurs est déjà définie à l'aide du préfixe c*, par exemple c*black.
Tu dois ensuite définir une syntaxe qui associe une séquence de couleurs à une valeur de résistance accompagnée de son unité SI, éventuellement avec un préfixe métrique, conformément aux instructions.
Les couleurs sont placées entre *[[ et ]] et séparées par , , par exemple *[[c*black, c*yellow, c*violet]].
Cette tâche te demandera probablement d'utiliser soit des notations, soit des macros. Tu peux consulter une référence.
Comme la nouvelle syntaxe est développée au moment de la compilation, aucun test ne se compilera tant que toute la syntaxe requise n'est pas définie.
C'est pourquoi, au lieu de nous appuyer sur des tests d'exécution classiques, on utilise #guard_msgs.
Cette commande compare une docstring donnée avec un message généré par une autre commande, ici #eval, et signale une erreur si les deux diffèrent.
Tu peux considérer l'absence d'erreur comme un test réussi.
Si tu travailles en local ou dans le playground en ligne de Lean, tu obtiendras un retour immédiat sur toute erreur signalée par #guard_msgs via Lean InfoView.
La valeur de résistance doit être écrite avec l'unité Ω (ohm).
Ce caractère unicode peut être généré en local ou dans le playground en ligne de Lean avec le raccourci \ohm.
Si tu travailles dans l'éditeur en ligne d'Exercism, n'hésite pas à copier le caractère depuis les instructions.
L'exécuteur de tests en ligne ne prend pas encore en charge l'import de l'intégralité de la bibliothèque de méta-programmation Lean.
Tu es libre d'utiliser toutes les fonctionnalités disponibles par défaut dans Lean, y compris celles qui se trouvent dans l'espace de noms Lean, mais ajouter import Lean ou importer des modules précis de l'espace de noms Lean fera échouer ta soumission lorsque tu l'enverras à Exercism.
À noter que l'import de la bibliothèque Lean n'est pas nécessaire pour résoudre cet exercice.
Inscris-toi sur Exercism pour apprendre et maîtriser Lean avec 100 exercices, et un vrai mentorat humain, le tout gratuitement.