Запрос версии интерпретатора Oflameron 1.25 Напиши HTML+JavaScript код веб-страницы, оптимизированной для просмотра на смартфоне с вертикальной ориентацией. Элементы интерфейса: Заголовок: "Интерпретатор языка Oflameron ver 1.25" Поле №1 (textarea): "Простое число (ключ для XOR)" Начальное значение: 176684706477838432958329750074291851582748389687561895812160620129261977163358586401104946332014022802424840484736440263640058869150064213123847594034139965365510006253457917812163931669483321 Подпись: "Введите ключ как строку цифр" Поле №2 (textarea): "Код программы Oflameron" Поле №3 (textarea, readonly): "Результат / Шифротекст" Кнопки: RUN (запуск интерпретатора) и XOR (операция с ключом) Блок для сообщений (div) Интерпретатор Oflameron: Переменные и константы: h, q, l, k - числовые переменные, начальное значение 0 для всех Константы: a=0, b=1, c=3, d=5, e=7, p=19, t=23, v=43, w=73 Нормализация чисел: javascript function normalize(num) { while (num > 127) num -= 127; if (num < 0) num = Math.abs(num); return num; } Применяется после КАЖДОЙ математической операции к результату. Допустимые операнды: Константы: a, b, c, d, e, p, t, v, w Переменные: h, q, l k используется ТОЛЬКО как индекс, НЕ как операнд Операторы: fXY - умножение: h = normalize(X * Y) (k+3) gXY - сложение: h = normalize(X + Y) (k+3) iXY - вычитание: h = normalize(Math.abs(X - Y)) (k+3) lX - записать в l ASCII-код символа из позиции k + normalize(X) (k+2) Если позиция вне строки > пропустить mX - вывести символ с кодом normalize(X) в поле #3 (k+2) Только если код 32-126 (печатные символы) nq - заменить символ в позиции k + normalize(q) на символ с кодом normalize(h) (k+2) Если позиция вне строки > пропустить После замены продолжать обычное выполнение Общие правила: Исполнение строго слева направо k только увеличивается Движение по коду: f,g,i: k+3 l,m,nq: k+2 Ошибка/неизвестный символ: k+1 Ошибка: если ожидается операнд, но символ недопустим > k+1 Неизвестные символы: пропускаются (k+1) Самомодификация: через оператор nq Сброс при RUN: обнулить h,q,l,k, очистить поле #3 Защита от циклов: максимум 100000 шагов Операция XOR: Выполняется: между ключом (поле #1) и текстом (поле #3) Процесс: Взять N = min(длина_ключа, длина_текста) Для i=0..N-1: результат[i] = String.fromCharCode(код_ключа[i] ^ код_текста[i]) Заменить содержимое поля #3 на результат Обратимость: XOR(XOR(текст, ключ), ключ) = текст Сообщения: в отдельном div показывать: "Ключ короче текста" (если ключ короче) "Текст короче ключа" (если текст короче) "XOR выполнен успешно" Требования к реализации: Чистый HTML/CSS/JavaScript без внешних библиотек Адаптивная вёрстка для мобильных устройств Кнопка RUN: запускает интерпретатор с кодом из поля #2 Кнопка XOR: выполняет операцию XOR как описано выше Состояние: не сохраняется между запусками Простое число: используется только для XOR, проверка не требуется Примеры: fbc > h = normalize(1*3) = 3, k+3 ghc > h = normalize(h + 3), k+3 lp > l = ASCII_код_в_позиции(k+19), k+2 ml > вывести символ с кодом normalize(l), k+2 nq > code[k+normalize(q)] = символ_с_кодом normalize(h), k+2 Примечание: Интерпретатор допускает неоднозначные ситуации - обязанность контроля возлагается на программиста. © by Valery Shmelev https://t.me/llmsource/391 https://llmproject.livejournal.com/15382.html https://telegra.ph/Web-Site-07-03 Online Processing https://chat.deepseek.com/share/nmdod80x5aplsi8zx5