http://en.wikipedia.org/wiki/Dissociated_press
Dissociated Press - это алгоритм, который генерирует случайный текст из существующего текста.
Алгоритм начинается с печати любых N последовательных слов (или букв) в тексте. Затем на каждом этапе он ищет любое случайное вхождение в исходном тексте последних N слов (или букв), уже напечатанных, а затем печатает следующее слово или букву.
Внедрение Dissociated Press, либо как функция, либо как целая программа. Самый короткий код выигрывает. Не используйте командную строку или скрипт emacs для вызова оригинальной программы Dissociated Press. Не используйте внешние библиотеки.
code-golf
markov-chain
Мин-Tang
источник
источник
Ответы:
Perl, 81
82Использует перекрытие 2 символов, исключает новые строки, останавливается, когда встречает тупик.
Например, используется в начале теста статьи в Википедии для цепей Маркова:
Он обращается с utf-8 случайно. Прекрасный.
источник
Брахилог , 45 байт
Попробуйте онлайн!
вход
(Образец) вывод
Уровень слова Dissociated Press всего на несколько байтов:
52 байта
Попробуйте онлайн!
вход
(Образец) вывод
источник
Вот немного более сложный алгоритм на основе слов, написанный на Scala , который учитывает вероятности последовательностей слов произвольной длины. (Это не оригинальный алгоритм диссоциированной прессы .)
Алгоритм заключается в следующем. На каждом шаге выберите скользящую половину текста, начиная со случайной позиции, найдите самую длинную хвостовую последовательность выходных слов, которая встречается в этой половине (это может быть 0 слов), и выведите следующее слово.
Вот пример вывода, также сгенерированного из статьи в Википедии о цепях Маркова:
Кстати, если вы используете
"[a-zA-Z .,!?]".r
как,wordregex
вы можете использовать это также для создания диссоциированной прессы на основе писем:Это становится действительно интересным с большим текстовым файлом, таким как файл Jargon . Теперь письмо на основе уже довольно хорошо:
Wordbased становится довольно забавным:
источник
Python 2,7, 355 символов
Я на самом деле написал программу, подобную этой, в качестве эксперимента с ИИ, так что давайте просто немного разберем ее, удалим некоторые ненужные вещи и поиграем в нее: D
ввод работает путем предоставления имени файла и длины вывода, которые вы хотите, в словах
образец текста, предоставленный вам предыдущим испытанием
При желании вы можете сохранить содержимое
m
файла в файл для последующего использования, поэтому нет необходимости анализировать весь файл, так как это может занять больше времени для создания словаря, на который он ссылается для слов, особенно для больших текстов (например, книги).редактировать: независимо от того, был ли уже выбран победитель, я отправляю это в любом случае: P
источник
Perl, 65 символов
Это в значительной степени основано на ответе JB , просто немного больше в гольфе. Используется
say
для хитрой экономии двух символов, поэтому должен запускаться с Perl 5.10 или более поздней версии и-M5.010
(или-E
) переключателем.Выполнение этого кода в статье в прессе о Википедии дало прекрасный результат:
источник