ETL

ETL

Könnyű

Bevezetés

Egy olyan cégnél dolgozol, amely egy Lexiconia nevű online többjátékos játékot készít.

A játékhoz minden játékos 13 betűt kap, amelyeket szavak alkotásához kell átrendeznie. A különböző betűknek különböző pontértékük van, mivel bizonyos betűkkel könnyebb szavakat alkotni, mint másokkal.

A játék eredetileg angolul indult, de nagyon népszerű, és a cég most más nyelvekre is szeretne terjeszkedni.

A különböző nyelveknek különböző pontértékeket kell támogatniuk a betűknél. A pontértékeket az határozza meg, hogy az adott nyelvben milyen gyakran használják a betűket a többi betűhöz képest.

Például a „C” betű meglehetősen gyakori az angolban, és csak 3 pontot ér. De a norvégban ez egy nagyon ritka betű, és 10 pontot ér.

Hogy könnyebb legyen új nyelveket hozzáadni, a csapatodnak meg kell változtatnia, hogyan tárolják a betűket és a pontértékeiket a játékban.

Utasítások

A feladatod, hogy megváltoztasd a játékban a betűk és a pontértékeik adatformátumát.

Jelenleg a betűk a pontszámuk alapján csoportosítva vannak tárolva, egy-több hozzárendelésben.

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

Ezt úgy kell átalakítani, hogy minden egyes betű a saját pontszámával együtt, egy-egy hozzárendelésben legyen tárolva.

  • Az „a” 1 pontot ér.
  • A „b” 3 pontot ér.
  • A „c” 3 pontot ér.
  • A „d” 2 pontot ér.
  • stb.

A változtatás részeként a csapat úgy is döntött, hogy a betűk ezután nagybetű helyett kisbetűvel szerepelnek.

Note

Ha szeretnéd megnézni, hogyan volt korábban strukturálva az adat, és hogyan kell megváltoztatni, vess egy pillantást a tesztekben szereplő példákra.

jq tippek

Ez a feladat arról szól, hogy fogunk egy bemeneti objektumot, és átalakítjuk egy új objektummá. Íme néhány beépített függvény, ami segíthet:

  • to_entries
    • ez a függvény bemenetként egy objektumot kap
    • egy tömböt ad vissza, amelynek minden eleme egy {"key": "K", "value": V} objektum
      • minden K a bemeneti objektum egyik kulcsa
      • minden V a K-hoz tartozó érték.
  • from_entries
    • az inverz művelet
    • {"key": K, "value": V} objektumok tömbjét kapja, és egy objektumot épít belőlük

Egy példa:

jq -n '
    {
        "username": "glennj",
        "tracks": ["bash", "awk", "jq"],
        "reputation": 123
    }
    | to_entries
'

az alábbi kimenetet adja:

[
  {
    "key": "username",
    "value": "glennj"
  },
  {
    "key": "tracks",
    "value": ["bash", "awk", "jq"]
  },
  {
    "key": "reputation",
    "value": 123
  }
]
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
jq Exercism

Készen állsz elkezdeni a(z) ETL feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) jq nyelvet 12 fogalom75 feladat segítségével, valódi emberi mentorálással, mindez ingyen.