Você trabalha em uma empresa que faz um jogo multiplayer online chamado Lexiconia.
Para jogar, cada pessoa recebe 13 letras, que precisa reorganizar para formar palavras. Letras diferentes valem pontos diferentes, já que é mais fácil formar palavras com algumas letras do que com outras.
O jogo foi lançado originalmente em inglês, mas faz muito sucesso, e agora a empresa quer expandir para outros idiomas também.
Idiomas diferentes precisam ter valores de pontos diferentes para as letras. Os valores de pontos são determinados pela frequência com que as letras são usadas, em comparação com as outras letras daquele idioma.
Por exemplo, a letra 'C' é bem comum em inglês e vale só 3 pontos. Mas em norueguês é uma letra muito rara e vale 10 pontos.
Para facilitar a adição de novos idiomas, sua equipe precisa mudar a forma como as letras e seus valores de pontos são armazenados no jogo.
Sua tarefa é mudar o formato dos dados das letras e dos valores em pontos delas no jogo.
Atualmente, as letras ficam armazenadas em grupos com base na pontuação delas, em um mapeamento de um para muitos.
Isso precisa mudar para armazenar cada letra individualmente com a pontuação dela, em um mapeamento de um para um.
Como parte dessa mudança, a equipe também decidiu deixar as letras em minúsculas em vez de maiúsculas.
Se você quiser ver como os dados eram estruturados antes e como eles precisam mudar, dê uma olhada nos exemplos na suíte de testes.
jq
Este exercício é sobre pegar um objeto de entrada e transformá-lo em um novo objeto. Algumas funções integradas que podem ajudar:
to_entries
{"key": "K", "value": V}
K é uma chave do objeto de entradaV é o valor correspondente a K.from_entries
{"key": K, "value": V} e constrói um objetoUm exemplo:
jq -n '
{
"username": "glennj",
"tracks": ["bash", "awk", "jq"],
"reputation": 123
}
| to_entries
'
produz:
[
{
"key": "username",
"value": "glennj"
},
{
"key": "tracks",
"value": ["bash", "awk", "jq"]
},
{
"key": "reputation",
"value": 123
}
]
Crie sua conta no Exercism para aprender e dominar jq com 12 conceitos75 exercícios e mentoria humana de verdade, tudo de graça.