Анаграма

Анаграма

Середня

Вступ

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

Повертати анаграми потрібно в тому самому порядку, у якому вони перелічені серед слів-кандидатів.

Наприклад: "tones\nnotes\nSeton\n"

Регістри

Регістр Використання Тип Опис
$a0 вхідні дані адреса цільовий рядок тексту, завершений нульовим символом, без символу нового рядка
$a1 вхідні дані адреса рядок тексту кандидатів, завершений нульовим символом, із символом нового рядка після кожного слова
$a2 вхідні/вихідні дані адреса рядок тексту вихідних даних, завершений нульовим символом, із символом нового рядка після кожного слова
$t0-9 тимчасовий будь-який для тимчасового зберігання
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
MIPS Assembly Exercism

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

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