Техника длинных анаграмм

Олег Марьин
В одной из статей (см. http://www.stihi.ru/2013/09/15/7954)
я уже рассказывал о программе нахождения 'коротких', до 12-13 букв, анаграмм. Анаграммы такой длины обычно весьма афористичны, свежи и остроумны. Их анаграммность видна невооруженным взглядом и слухом. Часто удается составить длинные кратные анаграммы - гетерограммы, например, на известную строку 'я встретил вас'
(см. Избранные анаграммы).

Но есть авторы, сочиняющие 'длинные' анаграммы, в которых начальная часть может состоять из трех и более слов, а ее длина доходить до 20 и более букв. Они бывают весьма забавны по смыслу. Точнее, в таких длинных анаграммах легко удаётся воспроизвести любую мысль. К недостаткам длинных анаграмм можно отнести то, что их анаграммность воспринимается только головой, умственно ('ну анаграмма, и что дальше?'). То есть, ни визуальным, ни слуховым наблюдением она не подтверждается - на слух и вид такие анаграммы уже не верифицируются.

Короткие анаграммы (в целом) создаются путем поиска (перебор вариантов с ограничениями), когда за основу берется начальная базовая часть. Обычно это короткие крылатые фразы или длинные слова. Например возьмем за основу слово 'треугольник'. Далее строим все комбинации которые составляют с этим словом анаграмму и выбираем из полученного списка подходящие комбинации слов (уже вручную). Для 'треугольник' подходящей осмысленной анаграммой будет 'не округлить'.

Как строить длинные анаграммы? Здесь я опишу один из возможных методов генерации таких анаграмм. Строить длинные анаграммы по такой же схеме, как и короткие весьма затруднительно слишком - много вариантов-комбинаций. Причем все они будут состоять из 3-4-5 слов и вероятность появления согласованных комбинаций слов мала. Здесь нужен синтаксический, как минимум, а лучше семантический фильтр, что в простом алгоритме не удаётся организовать.

Разумный выход - начинать с чего-то уже близкого к анаграмме. Поэтому действуем следующим образом. Находим два (или более) слова, которые будут являться смысловой основой первой и второй частей анаграммы, и которые имеют значительное пересечение по буквам. Находить такие пары достаточно легко. Любой человек может вспомнить несколько пар слов, имеющих существенное буквенное пересечение, которые можно использовать для составления длинной анаграммы.

Есть и другие варианты. Часто при генерации коротких анаграмм мы видим комбинации, которые являются почти очень удачными. То есть, изменить бы пару букв на другие, и мы получаем весьма интересное выражение-мысль. Но этих букв там нет. Эти 'почти анаграммы' можно использовать таким образом, чтобы удлинив их за счет добавочных слов, сделать их полными точными анаграммами.

Еще одним источником 'почти анаграмм' может стать список однословных анаграмм (которых более ста тысяч). В этом списке также есть интересные пары, которые могли стать афоризмами, если в каком-то из слов (или обоих) изменить пару букв. Такие пары также могут служить источником для генерации длинных анаграмм.

Программа (anag2.exe), реализующая данную методику находится в том же архиве, что и программа anag.exe,


в архиве findanag.zip. Для запуска используйте командный файл anagrun2.bat. Исходные строки (часть первой и второй части анаграммы) задавайте в файле anag2.txt. Например,

я не;но;

В данном примере будут искаться комбинации
"я не X, но Y"
где X и Y слова, которые будут искаться так, чтобы
была анаграмма

я не X
но Y

Один из найденных вариантов:
но (он) вякает:- я не таков
Здесь X = таков
Y = вякает.