Ha Raspberry Pi segítségével szeretnél valamit építeni, valószínűleg ellenállásokat fogsz használni. Ehhez a feladathoz csak három dolgot kell tudnod róluk:
Minden ellenállásnak van egy ellenállásértéke.
Az ellenállások kicsik, olyannyira, hogy ha rájuk nyomtatnák az ellenállásértéküket, nehéz lenne leolvasni. Hogy ezt a problémát megkerüljék, a gyártók színkódolt sávokat nyomtatnak az ellenállásokra, amelyek jelzik az ellenállásértéküket.
Minden sáv egy szám egyik számjegyeként viselkedik. Ha például egy brown sávot (értéke 1) nyomtatnának ki, majd utána egy green sávot (értéke 5), az a 15-ös számot jelentené. Ebben a feladatban egy hasznos programot készítesz, hogy ne kelljen megjegyezned a sávok értékeit. A program bemenetként 3 színt kap, és kiadja a helyes értéket ohmban. A színsávok kódolása a következő:
black: 0
brown: 1
red: 2
orange: 3
yellow: 4
green: 5
blue: 6
violet: 7
grey: 8
white: 9
Az Ellenállás színkód duó feladatban az első két színt fejtetted meg.
Például az orange-orange a 33 főértéket adta.
A harmadik szín azt jelöli, hány nullát kell a főértékhez fűzni.
A főérték a nullákkal együtt adja meg az ohmban kifejezett értéket.
A feladat szempontjából nem számít, hogy mi is az az ohm valójában.
Például:
(Ha a matek a te világod, a nullákra gondolhatsz úgy is, mint a 10 kitevőire. Ha nem a matek a te világod, maradj a nulláknál. Ez valójában ugyanaz, csak hétköznapi nyelven elmondva a matek szakzsargonja helyett.)
Ez a feladat arról szól, hogy a színeket egy felirattá alakítsd:
„... ohms”
Tehát a "orange", "orange", "black" bemenetre ezt kell visszaadnia:
„33 ohms”
A nagyobb ellenállásoknál a nagyobb ohmértéket egy metrikus előtag jelöli, például a „kiloohms” esetében. Ez ahhoz hasonló, mint amikor azt mondjuk, hogy „2 kilométer” a „2000 méter” helyett, vagy „2 kilogramm” a „2000 gramm” helyett.
Például a "orange", "orange", "orange" bemenetre ezt kell visszaadnia:
„33 kiloohms”
Ez a feladat a Resistor Color Duo folytatásának készült, és arra épül.
Bár a gyakorlófeladatokat bármilyen sorrendben megoldhatod, érdemes követned a javasolt sorrendet.
Ebben a feladatban a színekhez tartozó szintaxis már előre definiálva van a c* előtaggal, például c*black.
Ezután neked kell definiálnod azt a szintaxist, amely az utasításoknak megfelelően egy színsorozathoz ellenállásértéket rendel, annak SI-mértékegységével együtt, esetleg metrikus előtaggal.
A színek a *[[ és a ]] között helyezkednek el, é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 hivatkozást.
Mivel az új szintaxis már fordítási időben kifejtődik, bármelyik teszt fordítási hibával elbukna, ha nem lenne definiálva az összes szükséges szintaxis.
Ezért a hagyományos futásidejű tesztek helyett a #guard_msgs utasítást használjuk.
Ez az utasítás összehasonlít egy adott docstringet egy másik utasítás, jelen esetben a #eval által generált üzenettel, és hibát jelez, ha azok eltérnek.
A hiba hiányát nyugodtan tekintheted sikeres tesztnek.
Ha helyben dolgozol, vagy a Lean online játszóterét használod, a #guard_msgs által jelzett hibákról azonnali visszajelzést kapsz a Lean InfoView felületén.
Az ellenállásértéket a Ω (ohm) mértékegységgel kell kiírnod.
Ez a Unicode-karakter helyben vagy a Lean online játszóterén a \ohm beírásával hozható létre.
Ha az Exercism online szerkesztőjében dolgozol, nyugodtan másold ki a karaktert az utasításokbó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értelmezés szerint elérhető funkcióit, beleértve a Lean névtéren belülieket 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.
Vedd figyelembe, hogy 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.