Існує багато способів генерації випадкових слів. Ви можете взяти випадкові склади з набору, ви можете використовувати n-кортежі, ймовірно, нейронні мережі (що вони не можуть зробити?), Чергуючи приголосні та голосні тощо. Метод, на якому базується виклик, є найгіршим . Він використовує ланцюг Маркова для генерації випадкових слів. Якщо вам відомі ланцюги Маркова, ви, мабуть, знаєте, чому цей метод такий жахливий.
Якщо ви хочете почитати про ланцюги Маркова, натисніть тут .
Ваша програма візьме на введення одне або кілька слів та генерує одне випадкове слово методом зваженого ланцюга Маркова. Оскільки це, мабуть, має сенс ні для кого, крім мене, ось пояснення через використання зображення ланцюга Маркова із введенням abba
:
(Всі ваги краю однакові для всіх зображень) Ваша програма виведе шлях через ланцюг Маркова на основі вхідного тексту. Як бачите, є 1/2 ймовірності, що вона виведе a
, 1/8 шансів aba
, 1/16 шансу abba
, 1/32 шансу ababa
тощо.
Ось ще кілька прикладів ланцюгів Маркова:
yabba dabba doo
wolfram
supercalifragilisticexpialidocious
Якщо ви хочете більше прикладів, використовуйте це . (Я надто важко працював над цим)
Деталі виклику:
- Введення можна сприймати як список рядків, або як пробіл, кома або рядок, розділений для нового рядка
- Ви можете припустити, що всі слова будуть повністю малими, без розділових знаків (ASCII 97-122)
- Ви можете написати або програму, або функцію
- Для тестування ви, можливо, могли ввести приклади та побачити, чи всі входи узгоджуються з ланцюгами Маркова
Це є код-гольф, тож ваша програма оцінюється в байтах.
Повідомте мене, якщо якась частина цього є незрозумілою, і я спробую зробити це більше сенсу.
b
тому ви не можете створити подвійний b
. Більше того, як тільки ви дістанетесь до, b
це не здається можливим поверніться до, start
щоб створити інші слова). Я вважаю, ви повинні уточнити, які вимоги є ...
yabba dabba doo
аварії. Я виправлю це якнайшвидше. Щодо неможливості повернутися до початку, ви генеруєте лише одне слово із заданого набору слів. Це пояснює це?