Ha valamit egy Raspberry Pi segítségével szeretnél építeni, valószínűleg ellenállásokat fogsz használni. Ehhez a feladathoz két dolgot kell tudnod róluk:
Ennek a problémának a megoldására a gyártók színkódolt sávokat nyomtatnak az ellenállásokra, hogy jelezzék az ellenállásértékeiket. Minden sávnak van pozíciója és numerikus értéke.
Az ellenállás első 2 sávja egyszerű kódolást követ: minden szín egyetlen számhoz rendelődik. Például ha egy brown sávot (1-es érték), majd egy green sávot (5-ös érték) nyomtatnának rá, az a 15-ös számot jelentené.
Ebben a feladatban egy hasznos programot fogsz írni, hogy ne kelljen megjegyezned a sávok értékeit. A program színneveket kap bemenetként, és egy kétjegyű számot ad vissza, még akkor is, ha a bemenet kettőnél több színből áll!
A sávok színei a következőképpen vannak kódolva:
A fenti példa alapján: a brown-green esetében 15-öt kell visszaadni, a brown-green-violet esetében pedig szintén 15-öt, figyelmen kívül hagyva a harmadik színt.
Ez a feladat a Resistor Color folytatásának készült, és arra épül.
A gyakorlófeladatokat bármilyen sorrendben megoldhatod, de javasoljuk, hogy kövesd az ajánlott sorrendet.
Ebben a feladatban a színek szintaxisa már előre definiálva van a c* előtaggal, például c*black.
Ezután neked kell olyan szintaxist definiálnod, amely a színek egy sorozatát egy számhoz rendeli, az utasításoknak megfelelően.
A színek *[[ és ]] között vannak, és , választja el őket, például *[[c*black, c*yellow, c*violet]].
Ez a feladat valószínűleg megköveteli, hogy notációkat vagy makrókat használj. Érdemes megnézned egy referenciát.
Mivel az új szintaxis fordítási időben bővül ki, minden teszt fordítási hibát adna, hacsak nincs definiálva az összes szükséges szintaxis.
Ezért a hagyományos futásidejű tesztek helyett #guard_msgs-t használunk.
Ez a parancs egy adott docstringet hasonlít össze egy másik parancs, jelen esetben a #eval által generált üzenettel, és hibát jelez, ha eltérnek.
A hiba hiányát tekintheted sikeres tesztnek.
Ha helyben vagy a Lean online játszóterén dolgozol, a #guard_msgs által jelzett hibákról azonnali visszajelzést kapsz a Lean InfoViewon keresztül.
Az online tesztfuttató jelenleg nem támogatja a teljes Lean meta-programozási könyvtár importálását.
Bár szabadon használhatod a Lean alapértelmezett funkcióit, beleértve a Lean névtérben lévőket is, ha hozzáadod az import Lean sort, vagy konkrét modulokat importálsz a Lean névtérből, a beküldésed el fog bukni, amikor beküldöd az Exercism-re.
Megjegyzés: a Lean könyvtár importálása nem szükséges a feladat megoldásához.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Lean nyelvet 100 feladat segítségével, valódi emberi mentorálással, mindez ingyen.