На розпродажі в гаражі ми знаходимо чудову старовинну друкарську машинку за вигідною ціною! Збуджені, ми мчимо додому, вставляємо аркуш паперу й починаємо друкувати. Однак наше захоплення згасає, коли ми придивляємося до вихідних даних: усі слова переплутані! Наприклад, вона друкує «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".
Пропущені тести внизу файлу anagram_test.php - це додаткові завдання, вони необовʼязкові.
Вони потребують використання функцій mb_string, які типово не встановлені в кожній версії PHP.
Зареєструйтеся на Exercism, щоб вивчати й опановувати PHP, а також 11 концепцій121 вправа та справжнє наставництво від людей, і все це безкоштовно.