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.
A következő függvényt kell megvalósítanod:
value :: (Color, Color) -> Int
amely csak két színt fogad el, és visszaadja az ellenállás ellenállásértékének numerikus értékét.
Bónusz - tulajdonságalapú tesztelés:
Ez a feladat jó alkalom arra, hogy tulajdonságalapú teszteket írj. Ha még nem írtál ilyet korábban, itt van néhány hasznos forrás:
A tesztfájlban adtunk egy minta QuickCheck-tulajdonságalapú tesztet.
Példák olyan tulajdonságokra, amelyeket tesztelhetsz:
value (x, y) >= 10 minden olyan (x, y) esetén, ahol x nem Black
A value (x, y) értékre meghívott show a value (y, x) értékre meghívott show reverse-elt Stringjét adja eredményül.
Minden színnek egyedi a neve. (Bármely két színre igaz, hogy ha a színek különböznek, akkor a nevük is.)
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Haskell nyelvet 107 feladat segítségével, valódi emberi mentorálással, mindez ingyen.