- Регистрация
- 30.03.2012
- Сообщения
- 8 684
- Благодарностей
- 4 641
- Баллы
- 113
upd 25.02.2018 04:48 - Добавлен проект по генерации одного случайного варианта. Доработано экранирование спец. символов.
Привет! Зная, как обитатели этого форума любят всевозможную уникализацию, решил поделиться с вами своим расширенным spintax'ом. В своё время я написал его ради интереса без необходимости в практическом применении, поэтому вчерашний день был потрачен, чтобы отряхнуть его от пыли и одеть в новый пиджачок.
Что нового?
А теперь подробнее.
Генерация всех возможных комбинаций
Для этого достаточно выбрать разделитель во входных настройках и заполнить поле "Исходный текст".
Полученные варианты текста с заданным разделителем сохранятся в соответствующий файл в папке с шаблоном.
Количество слов в перестановках
Синтаксис расширенного spintax'а, думаю, вы все уже знаете(ссылка для тех, кто не знает). Я старался от него не отдалятся.
Пример:
[*1-2*+ +отличный|замечательный|великолепный|чудесный|несравненный|потрясающий]
*1-2* - количество слов в комбинации от 1го до 2х включительно. Параметр необязателен, при его отсутствии шаблон будет работать на максимальном числе слов.
+ + - в качестве 1го (в данном случае и единственного) разделителя выступает пробел.
Что в итоге?
В итоге мы получаем в сумме 36 вариантов с одним и двумя словами
потрясающий отличный
несравненный потрясающий
несравненный
великолепный несравненный
чудесный замечательный
...
Таким образом, если правильно подобрать синонимы, дополняющие друг друга, можно получить огромное количество вариантов без потери качества текста (или с минимальными потерями).
Несколько разделителей
Как я писал выше, очень ситуативная вещь эти разделители, но описать всё равно нужно. Сделаем это на примере.
[*2-6*+ и ++, ++, а также +красный|синий|чёрный|белый|зелёный|фиолетовый]
+ и + - разделитель между словами.
+, + - разделитель между группами слов.
+, а также + - разделитель для последнего слова. Работает только при нечётном количестве слов. Минимальное количество 3.
Какие конструкции имеем итоге?
красный и синий
красный и синий, а также чёрный
красный и чёрный, белый и фиолетовый
красный и белый, чёрный и зелёный, а также фиолетовый
фиолетовый и красный, синий и зелёный, чёрный и белый
...
Принцип, думаю, ясен. Все разделители необязательный для заполнения. Первый будет считаться пустотой в таком случае, второй и третий будут считаться не существующими и применяться не будут.
Экранирование
Спецсимволы "{", "[", "|", "]", "}", не участвующие в spintax'е, нужно экранировать: "\{", "\[", "\|", "\]", "\}". Если они уже заэкранированы и на выходе должны оставаться такими - следует добавить ещё слэш: "\\{", "\\[", "\\|", "\\]", "\\}"
Например, на входе: {1|\[\{2\|3\}\]}
На выходе:
1
[{2|3}]
На входе: {1|\\[\{2\|3\}\\]}
На выходе:
1
\[{2|3}\]
Спецсимвол "+" нужно экранировать только в разделителях.
Код был полностью переписан, алгоритмы изменены. Тесты удачные, но вдруг что не так - пишите.
И последнее. Комбинаторика может быть коварной. На одном числе слов шаб отрабатывает несколько секунд, вы решаете докинуть ещё несколько слов, вот только число комбинаций растёт в геометрической прогрессии и секунды могут превратиться в часы)
Привет! Зная, как обитатели этого форума любят всевозможную уникализацию, решил поделиться с вами своим расширенным spintax'ом. В своё время я написал его ради интереса без необходимости в практическом применении, поэтому вчерашний день был потрачен, чтобы отряхнуть его от пыли и одеть в новый пиджачок.
Что нового?
- Шаблон генерирует все возможные комбинации. Наверно, это самое важное. Полученный список уникален, а, значит, вероятность отработать один и тот же текст равна нулю.
- Настройка количества слов при перестановках. Пока непонятно, подробнее будет ниже на примерах. Важность сравнима с первым пунктом.
- Возможность использовать несколько разделителей, за счёт чего можно получить разные конструкции слов.
А теперь подробнее.
Генерация всех возможных комбинаций
Для этого достаточно выбрать разделитель во входных настройках и заполнить поле "Исходный текст".
Полученные варианты текста с заданным разделителем сохранятся в соответствующий файл в папке с шаблоном.
Количество слов в перестановках
Синтаксис расширенного spintax'а, думаю, вы все уже знаете(ссылка для тех, кто не знает). Я старался от него не отдалятся.
Пример:
[*1-2*+ +отличный|замечательный|великолепный|чудесный|несравненный|потрясающий]
*1-2* - количество слов в комбинации от 1го до 2х включительно. Параметр необязателен, при его отсутствии шаблон будет работать на максимальном числе слов.
+ + - в качестве 1го (в данном случае и единственного) разделителя выступает пробел.
Что в итоге?
В итоге мы получаем в сумме 36 вариантов с одним и двумя словами
потрясающий отличный
несравненный потрясающий
несравненный
великолепный несравненный
чудесный замечательный
...
Таким образом, если правильно подобрать синонимы, дополняющие друг друга, можно получить огромное количество вариантов без потери качества текста (или с минимальными потерями).
Несколько разделителей
Как я писал выше, очень ситуативная вещь эти разделители, но описать всё равно нужно. Сделаем это на примере.
[*2-6*+ и ++, ++, а также +красный|синий|чёрный|белый|зелёный|фиолетовый]
+ и + - разделитель между словами.
+, + - разделитель между группами слов.
+, а также + - разделитель для последнего слова. Работает только при нечётном количестве слов. Минимальное количество 3.
Какие конструкции имеем итоге?
красный и синий
красный и синий, а также чёрный
красный и чёрный, белый и фиолетовый
красный и белый, чёрный и зелёный, а также фиолетовый
фиолетовый и красный, синий и зелёный, чёрный и белый
...
Принцип, думаю, ясен. Все разделители необязательный для заполнения. Первый будет считаться пустотой в таком случае, второй и третий будут считаться не существующими и применяться не будут.
Экранирование
Спецсимволы "{", "[", "|", "]", "}", не участвующие в spintax'е, нужно экранировать: "\{", "\[", "\|", "\]", "\}". Если они уже заэкранированы и на выходе должны оставаться такими - следует добавить ещё слэш: "\\{", "\\[", "\\|", "\\]", "\\}"
Например, на входе: {1|\[\{2\|3\}\]}
На выходе:
1
[{2|3}]
На входе: {1|\\[\{2\|3\}\\]}
На выходе:
1
\[{2|3}\]
Спецсимвол "+" нужно экранировать только в разделителях.
Код был полностью переписан, алгоритмы изменены. Тесты удачные, но вдруг что не так - пишите.
И последнее. Комбинаторика может быть коварной. На одном числе слов шаб отрабатывает несколько секунд, вы решаете докинуть ещё несколько слов, вот только число комбинаций растёт в геометрической прогрессии и секунды могут превратиться в часы)
- Категория
- Другое
- Номер конкурса шаблонов
- Первый конкурс шаблонов
- Уровень сложности
- Продвинутый
Вложения
-
9,9 КБ Просмотры: 8 886
-
17,3 КБ Просмотры: 924
-
12 КБ Просмотры: 794
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование: