Percursos
/
SQLite
SQLite
/
Exercícios
/
Contagem de Palavras
Contagem de Palavras

Contagem de Palavras

Difícil

Introdução

Dás aulas de inglês como língua estrangeira a alunos do ensino secundário.

Decidiste basear todo o teu currículo em programas de televisão. Precisas de analisar que palavras são usadas e com que frequência se repetem.

Isto vai permitir-te escolher os programas mais simples para começar e aumentar gradualmente a dificuldade com o passar do tempo.

Instruções

A tua tarefa é contar quantas vezes cada palavra ocorre numa legenda de um drama.

As legendas destes dramas usam apenas carateres ASCII.

As personagens falam frequentemente num inglês informal, usando contrações como they're ou it's. Apesar de estas contrações virem de duas palavras (por exemplo, we are), a contração (we're) é considerada uma única palavra.

As palavras podem ser separadas por qualquer tipo de pontuação (por exemplo, ":", "!" ou "?") ou de espaço em branco (por exemplo, "\t", "\n" ou " "). A única pontuação que não separa palavras é o apóstrofo nas contrações.

Os números são considerados palavras. Se as legendas disserem It costs 100 dollars., então 100 será uma palavra própria.

As palavras não distinguem maiúsculas de minúsculas. Por exemplo, a palavra you ocorre três vezes na seguinte frase:

You come back, you hear me? DO YOU HEAR ME?

A ordem das contagens de palavras nos resultados não importa.

Aqui está um exemplo que junta vários dos elementos referidos acima:

  • palavras simples
  • contrações
  • números
  • palavras que não distinguem maiúsculas de minúsculas
  • pontuação (incluindo apóstrofos) para separar palavras
  • diferentes formas de espaço em branco para separar palavras

"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.

O mapeamento para esta legenda seria:

123: 1
agent: 1
cried: 1
fled: 1
i: 1
password: 2
so: 1
special: 1
that's: 1
the: 2

A coluna result deve conter um objeto de objetos codificado em JSON, com cada palavra como chave e a contagem como número inteiro.

Por exemplo, considera a frase acima: "That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled. O result para este valor de entrada deve ser:

{"123":1,"agent":1,"cried":1,"fled":1,"i":1,"password":2,"so":1,"special":1,"that's":1,"the":2}

Esquema da tabela

CREATE TABLE "word-count" (
    sentence TEXT NOT NULL,
    result   TEXT               -- json object
);

Documentação do JSON

Funções e operadores JSON


Fonte

Este é um clássico problema académico, mas lembrámo-nos dele ao vê-lo no Go Tour.
Editar via GitHub A ligação abre numa nova janela ou separador
SQLite Exercism

Estás pronto para começar Contagem de Palavras?

Inscreve-te no Exercism para aprenderes e dominares SQLite com 81 exercícios, e mentoria humana real, tudo grátis.