Треки
/
SQLite
SQLite
/
Вправи
/
Анаграма
Анаграма

Анаграма

Складна

Вступ

На розпродажі в гаражі ми знаходимо чудову старовинну друкарську машинку за вигідною ціною! Збуджені, ми мчимо додому, вставляємо аркуш паперу й починаємо друкувати. Однак наше захоплення згасає, коли ми придивляємося до вихідних даних: усі слова переплутані! Наприклад, вона друкує «stop» замість «post» і «least» замість «stale». Обережно ми пробуємо ще раз, але тепер вона друкує «spot» і «slate». Після кількох експериментів ми виявляємо, що перед друкуванням кожної літери є випадкова затримка, яка плутає порядок. Тепер ми розуміємо, чому її продали так дешево!

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

Вказівки

Маючи цільове слово та одне або кілька слів-кандидатів, наше завдання - знайти серед кандидатів ті, що є анаграмами цільового слова.

Анаграма - це перестановка літер, яка утворює нове слово: наприклад, "owns" є анаграмою "snow". Слово не вважається анаграмою самого себе: наприклад, "stop" не є анаграмою "stop".

Цільове слово та слова-кандидати складаються з однієї або кількох літер ASCII (A-Z і a-z). Малі та великі літери рівнозначні: наприклад, "PoTS" є анаграмою "sTOp", але "StoP" не є анаграмою "sTOp". Слова, які потрібно знайти, вибираються зі слів-кандидатів у тому самому регістрі літер.

Маючи цільове слово "stone" та слова-кандидати "stone", "tones", "banana", "tons", "notes" і "Seton", анаграми, які потрібно знайти, - це "tones", "notes" і "Seton".

  • Стовпець candidates містить закодований у JSON список рядків тексту (англ. string). Наприклад:
    ["stone","tones","banana","tons","notes","Seton"]
    
  • Стовпець result також повинен містити закодований у JSON список рядків тексту.

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

CREATE TABLE anagram (
  subject    TEXT NOT NULL,
  candidates TEXT NOT NULL,     -- json array of strings
  result     TEXT               -- json array of strings
);

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

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

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
SQLite Exercism

Час розпочати Анаграма?

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