Анаграма

Анаграма

Середня

Вступ

На розпродажі в гаражі ми знаходимо чудову старовинну друкарську машинку за вигідною ціною! Збуджені, ми мчимо додому, вставляємо аркуш паперу й починаємо друкувати. Однак наше захоплення згасає, коли ми придивляємося до вихідних даних: усі слова переплутані! Наприклад, вона друкує «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".

Формат вхідних і вихідних даних

Функція приймає один рядок тексту (англ. string) зі слів, кожне з яких у кінці має символ нового рядка.

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

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

Зарезервовані адреси

Буфер для вхідного рядка тексту використовує байти 64-319 лінійної памʼяті.

Ми можемо змінити цей буфер на місці, якщо хочемо уникнути додаткових виділень памʼяті.

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

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

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