Tracks
/
Haskell
Haskell
/
Übungen
/
Widerstandsfarben-Duo
Widerstandsfarben-Duo

Widerstandsfarben-Duo

Einfach

Anleitung

Wenn du etwas mit einem Raspberry Pi bauen möchtest, wirst du wahrscheinlich Widerstände verwenden. Für diese Übung musst du zwei Dinge über sie wissen:

  • Jeder Widerstand hat einen Widerstandswert.
  • Widerstände sind klein, so klein, dass es schwer zu lesen wäre, wenn du den Widerstandswert darauf drucken würdest.

Um dieses Problem zu umgehen, drucken Hersteller farbcodierte Bänder auf die Widerstände, um ihre Widerstandswerte anzugeben. Jedes Band hat eine Position und einen numerischen Wert.

Die ersten 2 Bänder eines Widerstands haben ein einfaches Kodierungsschema: Jede Farbe entspricht einer einzelnen Zahl. Wenn sie zum Beispiel ein braunes Band (Wert 1) gefolgt von einem grünen Band (Wert 5) aufdrucken würden, ergäbe das die Zahl 15.

In dieser Übung wirst du ein hilfreiches Programm erstellen, damit du dir die Werte der Bänder nicht merken musst. Das Programm nimmt Farbnamen als Eingabe und gibt eine zweistellige Zahl aus, selbst wenn die Eingabe mehr als zwei Farben umfasst!

Die Farben der Bänder sind wie folgt kodiert:

  • black: 0
  • brown: 1
  • red: 2
  • orange: 3
  • yellow: 4
  • green: 5
  • blue: 6
  • violet: 7
  • grey: 8
  • white: 9

Aus dem obigen Beispiel: brown-green sollte 15 zurückgeben, und brown-green-violet sollte ebenfalls 15 zurückgeben, wobei die dritte Farbe ignoriert wird.

Hinweise

Du musst die Funktion

value :: (Color, Color) -> Int

implementieren, die nur zwei Farben entgegennimmt und daraus den numerischen Wertanteil des Widerstands erzeugt.

Bonus - Property Testing:

Diese Übung ist eine gute Gelegenheit, ein paar Property-Tests zu schreiben. Wenn du noch nie welche geschrieben hast, findest du hier ein paar Ressourcen:

  1. School of Haskell.
  2. Real world Haskell

In der Testdatei haben wir einen beispielhaften Property-Test mit QuickCheck bereitgestellt.

Beispiele für Eigenschaften, die getestet werden können:

  • value (x, y) >= 10 für alle (x, y), bei denen x nicht Black ist

  • Ein Aufruf von show auf value (x, y) erzeugt den mit reverse umgedrehten String des Aufrufs von show auf value (y, x).

  • Alle Farben haben eindeutige Namen. (Für zwei beliebige Farben gilt: Wenn die Farben verschieden sind, sind auch ihre Namen verschieden.)

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Haskell Exercism

Bereit, mit Widerstandsfarben-Duo zu starten?

Melde dich bei Exercism an, um Haskell mit 107 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.