Kurzusok
/
Haskell
Haskell
/
Feladatok
/
Ellenállás színkódja: trió
Ellenállás színkódja: trió

Ellenállás színkódja: trió

Könnyű

Utasítások

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:

  • az orange-orange-black 33 lenne, nulla nélkül, ami 33 ohms.
  • az orange-orange-red 33 lenne 2 nullával, ami 3300 ohms.
  • az orange-orange-orange 33 lenne 3 nullával, ami 33000 ohms.

(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”

Tippek

A label és az ohms függvényt kell megvalósítanod. A label esetében használhatod a megadott szignatúrát, de ne hagyd, hogy az korlátozza a kreativitásodat.

Ez a feladat szöveges adatokkal dolgozik. Történelmi okokból a Haskell String típusa a [Char] szinonimája, ami karakterek listája. A szöveges adatok hatékonyabb kezeléséhez a Text típus használható.

A feladat opcionális kiterjesztéseként a következőket teheted:

  • Olvass a Haskell stringtípusairól.

  • Add hozzá a - text sort a függőségeid listájához a package.yaml fájlban.

  • Importáld a Data.Text modult a következő módon:

    import qualified Data.Text as T
    import           Data.Text (Text)
    
  • Most már írhatsz például ilyet: label :: Resistor -> Text, és hivatkozhatsz a Data.Text kombinátoraira, például így: T.pack.

  • Nézd meg a Data.Text dokumentációját,

Ez a rész teljesen opcionális.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Haskell Exercism

Készen állsz elkezdeni a(z) Ellenállás színkódja: trió feladatot?

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.