Skip to content
vaskesPublic

About

Digital archaeology artifact dissassembled logics of СТИХОПЛЮЙ V4.0 - GrinchSoft (C), 1991. freeware

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

СТИХОПЛЮЙ v4.0 — клон для браузера

Восстановленная логика оригинальной программы GrinchSoft, 1991, переписана на современный стек: чистый HTML/CSS/JavaScript без зависимостей. Запускается в любом браузере, никакой сервер не нужен.

Копирайт и атрибуция

СТИХОПЛЮЙ V4.0 - GrinchSoft (C), 1991. Распространяется свободно.

Если Вам понравилась эта программа, Вы можете выслать 5 руб. по адресу: 141740, до востребования, Гринчуку Михаилу Ивановичу. Просьба также сообщать о случаях публикации созданных с помощью этой программы текстов.

Оригинальный TUI-баннер программы дословно сохранён в UI (раскрывающийся блок под заголовком). Автор программы — Михаил Иванович Гринчук, 1991. Словари rhymer.dat, rhymer2.dat, rhymer.res, конфиг onegin.cfg — распространяются свободно вместе с оригинальной программой и используются в этом клоне без изменений.

Этот клон — неофициальный, распространяется с тем же «свободным» условием. Все отклонения от оригинальной логики задокументированы в CHANGES.md. История программы, личность автора (Михаил Иванович Гринчук, ~1951–1981 г.р.), попытки его найти и хронология проекта восстановления — в HISTORY.md.

Что внутри

файл назначение
index.html UI (форма с метром, рифмой, загрузкой файлов, кнопкой «сочинить»)
style.css оформление в стиле DOS-Text-UI
stihoplyui.js парсер словаря/конфига + алгоритм генерации
onegin.cfg пример конфига (строфа «Я помню чудное мгновенье…»)
rhymer.dat словарь русских слов (445 записей, 1–8 слогов)
rhymer2.dat английский словарь (опционально)

Пресеты размеров и рифм

В UI есть выпадашка с готовыми размерами (метр + рифма). Пресеты:

Четверостишия:

  • Ямб 4-стопный, мужское окончание, ABAB (8 слогов: -'-'-'-'-')
  • Ямб 4-стопный, женское окончание, ABAB (9 слогов: -'-'-'-'-)
  • Ямб 4-стопный, женское, AABB
  • Ямб 3-стопный, чередование окончаний, ABAB (как «тот город поэтичный / скорей просил мороз»)
  • Ямб 3-стопный, женское, ABAB (7 слогов)
  • Хорей 4-стопный, женское, ABAB (8 слогов)
  • Хорей 3-стопный, мужское, ABAB (6 слогов)
  • Дактиль 2-стопный, мужское, ABAB (6 слогов)
  • Анапест 2-стопный, мужское, ABAB (6 слогов)
  • Амфибрахий 3-стопный, мужское, ABAB (9 слогов)

Стансы:

  • Онегинская строфа (14 строк, как в rhymer.cfg)
  • Сонет: 3 катрена + 2 строки (14 строк, рифма ABAB CDC DEDE FF)
  • Шестистишие (6 строк, 6-стопный ямб)

Выбираешь пресет → жмёшь «применить» → строки таблицы заполняются → жмёшь «сочинить».

Можно и руками: пишешь - (безударный) и ' (ударный) в колонке «размер», ставишь букву рифмы в колонке «рифма».

Запуск

# просто открыть в браузере
xdg-open index.html      # Linux
open index.html          # macOS
start index.html         # Windows

Или поднять локально (если хочется HTTP, например для тестов):

python3 -m http.server 8080
# затем http://localhost:8080

Алгоритм

  1. Парсинг словаря (rhymer.dat):

    • каждая запись — строка в CP866 (или UTF-8 BOM-без), 25 байт слово + 10 байт шаблон ударений (-/') + 5 байт ключ рифмы + 0–2 байта часть речи (N, A, VН, VП, ?V, ? или пусто).
  2. Парсинг конфига (rhymer.cfg):

    • 1–35: имя словаря;
    • 36–70: имя ресурсов;
    • далее 20 полей по 25 знаков: в начале шаблон ударений, последний знак (если не пробел) — буква рифмы.
  3. Генерация (compose()):

    • для каждой строки ищутся все возможные разложения шаблона ударений строки на последовательность словарных статей, чьи шаблоны складываются в строку;
    • к разложениям применяется POS-фильтр (прилагательное должно идти перед существительным; однословная строка не может быть наречием);
    • рифменные группы (строки с одинаковой буквой) получают общий rhyme-якорь; при наличии — последнее слово строки фильтруется по этому якорю;
    • из подходящих разложений выбирается случайное (зерно — время по таймеру).

Соответствие оригиналу

фича оригинал RHYMER.EXE этот клон
формат словаря 42 байта ✅ ✅
формат конфига 35+35+25·N ✅ ✅
поддержка до 20 строк в строфе ✅ ✅
многословное заполнение строк ✅ (диспетчер 0x2ce9) ✅ (бэктрекинг)
POS-фильтрация ✅ (по первой букве строки) ⚠️ упрощённо (adj+noun, no single adverb)
фиксация рифмы для группы ✅ ⚠️ мягкая (предпочтение, не строгий лок)
ограничение «не то же слово подряд» ✅ (вероятно) ✅
файл ресурсов (.res) ✅ (для резервных рифм) ⚠️ игнорируется (нет данных в .res)
интерактивное редактирование строк ✅ (F3/F4/F7/F8) ✅ (кнопки)
сохранение в файл вывода ✅ (F5 + rhymer.out) ✅ (скачивание .txt)
защита от PGPROT/virus ✅ (CRC-проверка) ❌ неактуально для веба
TUI-интерфейс (псевдографика) ✅ ❌ заменён HTML

Что НЕ клонировалось

  • DOS-специфичные вещи: PSP, релокации, инт 21h/10h/1Ah.
  • CRC-проверка PGPROT — это защита 1991 года от вирусов, в браузере она не нужна.
  • Интерактивная помощь по F-клавишам внутри TUI.
  • Файл ресурсов .res — содержит «запасные» стихи, которые программа подставляла, когда не могла сгенерировать. Сейчас клон возвращает [нет: шаблон].

Известные отличия в логике

  • Оригинальный RHYMER.EXE хранит в [0x1940] предвычисленный список «слотов» для каждой строки (до 21 слова на строку). Мой клон делает разложение на лету через бэктрекинг. Результат — аналогичный, но с разной номенклатурой (словарь маленький, потому повторы неизбежны).
  • Защита от повторов в оригинале — запрет «то же слово в той же позиции»; в клоне — запрет «то же слово в любой позиции следующей строки». Это слегка жёстче, но даёт более разнообразный текст.

About

Digital archaeology artifact dissassembled logics of СТИХОПЛЮЙ V4.0 - GrinchSoft (C), 1991. freeware

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages