Tracks
/
Lean
Lean
/
Übungen
/
Widerstandsfarben-Trio
Widerstandsfarben-Trio

Widerstandsfarben-Trio

Mittel

Anleitung

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

  • Jeder Widerstand hat einen Widerstandswert.

  • Widerstände sind klein, so klein, dass es schwer zu lesen wäre, wenn man den Widerstandswert auf sie drucken würde. Um dieses Problem zu umgehen, drucken Hersteller farbcodierte Ringe auf die Widerstände, um ihre Widerstandswerte anzugeben.

  • Jeder Ring steht für eine Ziffer einer Zahl. Wenn sie zum Beispiel einen Ring in der Farbe brown (Wert 1) gefolgt von einem Ring in der Farbe green (Wert 5) drucken würden, ergäbe das die Zahl 15. In dieser Übung erstellst du ein hilfreiches Programm, damit du dir die Werte der Ringe nicht merken musst. Das Programm nimmt 3 Farben als Eingabe und gibt den korrekten Wert in Ohm aus. Die Farbringe sind wie folgt codiert:

  • black: 0

  • brown: 1

  • red: 2

  • orange: 3

  • yellow: 4

  • green: 5

  • blue: 6

  • violet: 7

  • grey: 8

  • white: 9

In Widerstandsfarben-Duo hast du die ersten beiden Farben entschlüsselt. Zum Beispiel: orange-orange ergab den Hauptwert 33. Die dritte Farbe steht für die Anzahl der Nullen, die zum Hauptwert hinzugefügt werden müssen. Der Hauptwert plus die Nullen ergibt einen Wert in Ohm. Für die Übung spielt es keine Rolle, was Ohm wirklich ist. Zum Beispiel:

  • orange-orange-black wäre 33 und keine Nullen, was 33 ohms ergibt.
  • orange-orange-red wäre 33 und 2 Nullen, was 3300 ohms ergibt.
  • orange-orange-orange wäre 33 und 3 Nullen, was 33000 ohms ergibt.

(Wenn Mathe dein Ding ist, kannst du die Nullen als Exponenten von 10 betrachten. Wenn Mathe nicht dein Ding ist, bleib bei den Nullen. Es ist wirklich dasselbe, nur in normaler Sprache statt in Mathe-Jargon.)

In dieser Übung geht es darum, die Farben in ein Label zu übersetzen:

„... ohms“

Eine Eingabe von "orange", "orange", "black" sollte also Folgendes zurückgeben:

„33 ohms“

Bei größeren Widerständen wird ein metrisches Präfix verwendet, um eine größere Größenordnung von Ohm anzugeben, zum Beispiel „kiloohms“. Das ist ähnlich wie „2 Kilometer“ statt „2000 Meter“ oder „2 Kilogramm“ für „2000 Gramm“.

Zum Beispiel sollte eine Eingabe von "orange", "orange", "orange" Folgendes zurückgeben:

„33 kiloohms“

Syntax definieren

Caution

Diese Übung ist als Fortsetzung von Resistor Color Duo gedacht und baut darauf auf. Auch wenn du die Übungen in beliebiger Reihenfolge lösen kannst, empfehlen wir dir, die vorgeschlagene Reihenfolge einzuhalten.

In dieser Übung bekommst du Syntax für Farben, die bereits über das Präfix c* vordefiniert ist, z. B. c*black. Du musst dann eine Syntax definieren, die nach den Anweisungen eine Folge von Farben einem Widerstandswert mit seiner SI-Einheit zuordnet, gegebenenfalls mit einem metrischen Präfix. Die Farben stehen zwischen *[[ und ]] und werden durch , getrennt, z. B. *[[c*black, c*yellow, c*violet]].

Für diese Aufgabe wirst du wahrscheinlich entweder Notationen oder Makros verwenden müssen. Vielleicht wirfst du einen Blick in eine Referenz.

Da neue Syntax zur Kompilierzeit expandiert wird, lässt sich kein Test kompilieren, solange nicht die gesamte benötigte Syntax definiert ist. Aus diesem Grund verwenden wir statt der üblichen Tests zur Laufzeit #guard_msgs. Dieser Befehl vergleicht einen angegebenen Docstring mit einer Meldung, die ein anderer Befehl erzeugt, in diesem Fall #eval, und meldet einen Fehler, wenn sie sich unterscheiden. Du kannst das Ausbleiben eines Fehlers als bestandenen Test betrachten.

Wenn du lokal oder im Online-Spielplatz von Lean arbeitest, bekommst du über das Lean InfoView sofort Rückmeldung zu jedem Fehler, den #guard_msgs meldet.

Note

Der Widerstandswert sollte mit der Einheit Ω (Ohm) ausgegeben werden. Dieses Unicode-Zeichen kannst du lokal oder im Online-Spielplatz von Lean mit dem Kürzel \ohm erzeugen. Wenn du im Online-Editor von Exercism arbeitest, kannst du das Zeichen gern aus den Anweisungen kopieren.

Caution

Der Online-Test-Runner unterstützt derzeit nicht das Importieren der vollständigen Meta-Programmierbibliothek von Lean. Du darfst zwar alle Funktionen nutzen, die Lean standardmäßig bietet, auch die im Namensraum Lean, aber wenn du import Lean hinzufügst oder bestimmte Module aus dem Namensraum Lean importierst, schlägt deine Abgabe fehl, wenn du sie bei Exercism einreichst.

Beachte, dass du die Lean-Bibliothek nicht importieren musst, um diese Übung zu lösen.

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

Bereit, mit Widerstandsfarben-Trio zu starten?

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