Треки
/
SQLite
SQLite
/
Вправи
/
Підрахунок слів
Підрахунок слів

Підрахунок слів

Складна

Вступ

Ми викладаємо англійську як іноземну учням старших класів.

Ми вирішили побудувати всю навчальну програму на телесеріалах. Потрібно проаналізувати, які слова використовуються і як часто вони повторюються.

Це дозволить обрати найпростіші серіали для початку й поступово підвищувати складність із часом.

Вказівки

Потрібно порахувати, скільки разів кожне слово трапляється в субтитрі драми.

У субтитрах цих драм використовуються лише символи ASCII.

Персонажі часто говорять невимушеною англійською, використовуючи скорочення як-от they're чи it's. Хоча ці скорочення походять від двох слів (наприклад, we are), саме скорочення (we're) вважається одним словом.

Слова можуть розділяти будь-які розділові знаки (наприклад, ":", "!" чи "?") або пробільні символи (наприклад, "\t", "\n" чи " "). Слова не розділяє лише апостроф у скороченнях.

Числа теж вважаються словами. Якщо в субтитрах сказано It costs 100 dollars., то 100 буде окремим словом.

Слова нечутливі до регістру. Наприклад, слово you трапляється тричі в такому реченні:

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

Порядок підрахунків слів у результатах не має значення.

Ось приклад, який поєднує кілька описаних вище елементів:

  • прості слова
  • скорочення
  • числа
  • слова, нечутливі до регістру
  • пунктуація (зокрема апострофи) для розділення слів
  • різні види пробільних символів для розділення слів

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

Ось відображення для цього субтитру:

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

Стовпець result повинен містити закодований у JSON обʼєкт обʼєктів, де кожне слово - ключ, а кількість - ціле число.

Наприклад, візьмімо речення вище: "That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled. result для цих вхідних даних має бути таким:

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

Схема таблиці

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

Документація JSON

Функції та оператори JSON


Джерело

Це класична навчальна задача, але ми згадали про неї, побачивши її в Go Tour.
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
SQLite Exercism

Час розпочати Підрахунок слів?

Зареєструйтеся на Exercism, щоб вивчати й опановувати SQLite, а також 81 вправа та справжнє наставництво від людей, і все це безкоштовно.