ETL

ETL

Einfach

Einführung

Du arbeitest für ein Unternehmen, das ein Online-Multiplayer-Spiel namens Lexiconia entwickelt.

Um das Spiel zu spielen, bekommt jeder Spieler 13 Buchstaben, die er zu Wörtern umsortieren muss. Verschiedene Buchstaben haben unterschiedliche Punktwerte, denn mit manchen Buchstaben lassen sich leichter Wörter bilden als mit anderen.

Das Spiel ist ursprünglich auf Englisch erschienen und sehr beliebt. Jetzt möchte das Unternehmen auf weitere Sprachen expandieren.

Verschiedene Sprachen müssen unterschiedliche Punktwerte für Buchstaben unterstützen. Wie viele Punkte ein Buchstabe wert ist, hängt davon ab, wie häufig er im Vergleich zu anderen Buchstaben der jeweiligen Sprache verwendet wird.

Der Buchstabe „C“ zum Beispiel ist im Englischen recht häufig und bringt nur 3 Punkte. Im Norwegischen ist er dagegen sehr selten und bringt 10 Punkte.

Damit sich neue Sprachen leichter hinzufügen lassen, muss dein Team ändern, wie Buchstaben und ihre Punktwerte im Spiel gespeichert werden.

Anleitung

Deine Aufgabe ist es, das Datenformat der Buchstaben und ihrer Punktwerte im Spiel zu ändern.

Derzeit werden die Buchstaben nach ihrer Punktzahl in Gruppen gespeichert, in einer Eins-zu-viele-Zuordnung.

  • 1 Punkt: „A“, „E“, „I“, „O“, „U“, „L“, „N“, „R“, „S“, „T“,
  • 2 Punkte: „D“, „G“,
  • 3 Punkte: „B“, „C“, „M“, „P“,
  • 4 Punkte: „F“, „H“, „V“, „W“, „Y“,
  • 5 Punkte: „K“,
  • 8 Punkte: „J“, „X“,
  • 10 Punkte: „Q“, „Z“,

Das muss geändert werden, sodass jeder einzelne Buchstabe mit seiner Punktzahl in einer Eins-zu-eins-Zuordnung gespeichert wird.

  • „a“ ist 1 Punkt wert.
  • „b“ ist 3 Punkte wert.
  • „c“ ist 3 Punkte wert.
  • „d“ ist 2 Punkte wert.
  • usw.

Im Rahmen dieser Änderung hat das Team außerdem beschlossen, die Buchstaben in Kleinbuchstaben statt in Großbuchstaben zu ändern.

Note

Wenn du sehen möchtest, wie die Daten vorher strukturiert waren und wie sie geändert werden müssen, schau dir die Beispiele in der Testsuite an.

Hinweise

Diese Übung arbeitet mit Textdaten. Aus historischen Gründen ist der Typ String in Haskell gleichbedeutend mit [Char], einer Liste von Zeichen. Für einen effizienteren Umgang mit Textdaten kannst du den Typ Text verwenden.

Als optionale Erweiterung dieser Übung kannst du

  • etwas über String-Typen in Haskell lesen.

  • - text zu deiner Liste der Abhängigkeiten in package.yaml hinzufügen.

  • Data.Text auf die folgende Weise importieren:

      import qualified Data.Text as T
      import           Data.Text (Text)
    
  • jetzt zum Beispiel transform :: Map Int Text -> Map Char Int schreiben und Data.Text-Kombinatoren zum Beispiel als T.toLower verwenden.

  • die Dokumentation für Data.Text nachschlagen.

Dieser Teil ist völlig optional.

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

Bereit, mit ETL zu starten?

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