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.
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.
Das muss geändert werden, sodass jeder einzelne Buchstabe mit seiner Punktzahl in einer Eins-zu-eins-Zuordnung gespeichert wird.
Im Rahmen dieser Änderung hat das Team außerdem beschlossen, die Buchstaben in Kleinbuchstaben statt in Großbuchstaben zu ändern.
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.
jq-TippsIn dieser Übung geht es darum, ein Eingabeobjekt zu nehmen und daraus ein neues Objekt zu machen. Ein paar eingebaute Funktionen, die dabei helfen können:
to_entries
{"key": "K", "value": V}
K ist ein Schlüssel aus dem EingabeobjektV ist der zu K gehörende Wert.from_entries
{"key": K, "value": V}-Objekten und konstruiert daraus ein ObjektEin Beispiel:
jq -n '
{
"username": "glennj",
"tracks": ["bash", "awk", "jq"],
"reputation": 123
}
| to_entries
'
gibt Folgendes aus:
[
{
"key": "username",
"value": "glennj"
},
{
"key": "tracks",
"value": ["bash", "awk", "jq"]
},
{
"key": "reputation",
"value": 123
}
]
Melde dich bei Exercism an, um jq mit 12 Konzepte75 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.