你在一間製作線上多人遊戲的公司工作,這款遊戲叫做 Lexiconia。
要玩這款遊戲,每位玩家會拿到 13 個字母,他們必須重新排列這些字母來組成單字。 不同的字母有不同的點數,因為用某些字母組成單字就是比其他字母容易。
這款遊戲最初以英文推出,但非常受歡迎,現在公司也想拓展到其他語言。
不同的語言需要支援不同的字母點數。 字母的點數取決於它在該語言中相較於其他字母的使用頻率。
例如,字母「C」在英文中相當常見,只值 3 分。 但在挪威文中它是很罕見的字母,值 10 分。
為了讓新增語言更容易,你的團隊需要改變遊戲中字母及其點數的儲存方式。
你的任務是改變遊戲中字母及其點數的資料格式。
目前,字母是依照分數分組儲存的,形成一對多的對應關係。
這裡需要改成把每個字母各自與其分數一起儲存,形成一對一的對應關係。
作為這項變更的一部分,團隊也決定把字母改為小寫,而不再是大寫。
如果你想看看資料原本的結構,以及它需要怎麼改變,可以看看測試套件裡的範例。
jq 小技巧這個練習要拿一個輸入物件,把它轉換成一個新的物件。 有幾個內建函式可能幫得上忙:
to_entries
{"key": "K", "value": V}
K 都是輸入物件裡的一個鍵V 都是 K 對應的值。from_entries
{"key": K, "value": V} 物件組成的陣列,並建構出一個物件例如:
jq -n '
{
"username": "glennj",
"tracks": ["bash", "awk", "jq"],
"reputation": 123
}
| to_entries
'
會輸出
[
{
"key": "username",
"value": "glennj"
},
{
"key": "tracks",
"value": ["bash", "awk", "jq"]
},
{
"key": "reputation",
"value": 123
}
]