Программа на языке Oflameron

 Примеры ИИ запросов

Запрос на составление программы на языке Oflameron версии 1.50 

Программа на языке Oflameron при выполнении в Интерпретаторе в качестве результата выдаёт текст (текст, текстовый скрипт, листинг кода какого-то языка), заданный пользователем.


Описание для преобразования заданного пользователем текста в код программы. Текст для кодирования будет задан в конце запроса.


Код программы на языке Oflameron представляет собой текстовую строку, которая просматривается Интерпретатором исключительно слева направо.

Код программы всегда начинается с оператора. 


Код программы на языке Oflameron представляет собой строку из констаннт, операторов, индексов, управляющих и балластных символов.

Полный набор символов, используемый в языке Oflameron версии 1.50  -  a, b, c, d, e, p, t, v, w, h, q, l, k, f, g, i, m, n, s, x. Все остальные символы не имеют никаких функций в языке Oflameron и просто пропускаются (это балластные символы, которые добавляются для скрытия кода программы).

Константы:  a=0, b=1, c=3, d=5, e=7, p=19, t=23, v=43, w=73

Переменные: h, q, l, k (Начальные значения =0)

Операторы: f, g, i, l, m, n

Управляющие символы (фактически - тоже операторы): s, x

Балластные символы: все остальные символы, кроме указанных выше a, b, c, d, e, p, t, v, w, h, q, l, k, f, g, i, m, n, s, x. Балластные символы просто пропускаются транслятором.



В преобразовании символов заданного текста используется функция нормализации. На JavaScript  это выглядит так:

Нормализация чисел:

javascript

function normalize(num) {

    while (num > 127) num -= 127;

    if (num < 0) num = Math.abs(num);

    return Math.floor(num);

}

Применяется после КАЖДОЙ математической операции к результату. Это делается для того, чтобы в работе программы использовались только коды символов в диапазоне 0-127




Длина констант, переменных, операторов и управляющих символов:


* Важно. Хотя символ l в строке кода программы должен обрабатываться как оператор с длиной два символа (второй символ - параметр), результат выполнения записывается в переменную l.

** Если в коде программы l встречается на позициии оператора f, g, i, m, n то в этом случае l - переменная. Например: fal или gcl или ml... Если l встречается после оператора с параметрами - то l в этом случае оператор с длиной два символа. Например: fbcle или gcale и т.д.


- константы  используются в составе операторов в качестве параметров. Константы занимают в коде программы 1 символ

- переменные используются в составе операторов в качестве параметров. Переменные занимают в коде программы 1 символ

- операторы f, g, i занимают в строке кода программы 3 символа (символ оператора f, g или i и два параметра - переменных или констант)

- операторы m, l и n занимают в коде программы два символа (символ оператора m, l или n и один параметр)

- управляющие символы s и x имеют длину 2 символа


В JavaScript используется внутренняя переменная SYMBOL_ORDER = ['a','b','c','d','e','p','t','v','w','h','q','l','k','f','g','i','m','n','s','x'] определяющая порядок констант, переменных, операторов и управляющих символов.


Если считать SYMBOL_ORDER массивом с индексом от1 до 20, то:


Позиции 1-9 в SYMBOL_ORDER занимают константы.

Позиции 10-13 в SYMBOL_ORDER занимают переменные

Позиции 14-18 в SYMBOL_ORDER занимают операторы

Позиции 19-20 в SYMBOL_ORDER занимают управляющие символы


Это важно для правильной ротации функциональности. 

Ротация функциональности определяется значением STP - внутренней переменной JavaScript 


Если явно не задано значение, то  по умолчанию STP=1


Правила ротации функциональности констант, переменных, операторов, управляющих символов:


Когда выполнять ротацию: Ротация выполняется после (после!) выполнения КАЖДОГО оператора (f,g,i,l,m,n). 


Если значение переменной STP не равно нулю, то после каждого исполнения любого оператора выполняется сдвиг функциональности в соответствии с следующей таблицей

Столбцы таблицы показывают, как меняется функции каждого символа в SYMBOL_ORDER для каждого значения STR



STP= 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

------------------------------------------------------------------------------------------------------------------- Какие функции выполняет --------------------------------------------------------------------------------------------------------------------

Константа a a b c d e p t v w h q l k f g i m n s x

Константа b b c d e p t v w h q l k f g i m n s x a

Константа c c d e p t v w h q l k f g i m n s x a b

Константа d d e p t v w h q l k f g i m n s x a b c

Константа e e p t v w h q l k f g i m n s x a b c d

Константа p p t v w h q l k f g i m n s x a b c d e

Константа t t v w h q l k f g i m n s x a b c d e p

Константа v v w h q l k f g i m n s x a b c d e p t

Константа w w h q l k f g i m n s x a b c d e p t v

Переменная h h q l k f g i m n s x a b c d e p t v w

Переменная q q l k f g i m n s x a b c d e p t v w h

Переменная l l k f g i m n s x a b c d e p t v w h q

Переменная k k f g i m n s x a b c d e p t v w h q l

Оператор f f g i m n s x a b c d e p t v w h q l k

Оператор g g i m n s x a b c d e p t v w h q l k f

Оператор i i m n s x a b c d e p t v w h q l k f g

Оператор m m n s x a b c d e p t v w h q l k f g i

Оператор n n s x a b c d e p t v w h q l k f g i m

Символ s s x a b c d e p t v w h q l k f g i m n

Символ x x a b c d e p t v w h q l k f g i m n s


Как это работает. Примеры сдвига функциональности символов:


Например, если STP=1 и в тексте кода программы встречается символ m, то выбираем перемечение строки "Оператор m" и колонки "STP=1" - получаем, что символ m будет выполнять функцию оператора n


Пример, если STP=3 и в тексте кода программы встречается символ m, то выбираем перемечение строки "Оператор m" и колонки "STP=3" - получаем, что символ m будет выполнять функцию оператора x.

Причём, управляющий символ x изначально имеет другую длину ("x" имеет длину 2 символа - собственно "x" и параметр), нежели оператор "m" (3 символа - собственно "m" и два параметра).  В этом случае запись в коде "mcb" должна исполнять функцию "xc" (оставшийся символ "b" отбрасывается как ошибочный, т.к. функционал изначального "x" не предусматривает второго параметра).


Сдвиг функциональности выполняется после выполнения каждого оператора. Т.е. запись кода fcdgbemc... надо рассматривать как fcd(сдвиг)gbe(сдвиг)mc(сдвиг)...


Ошибки: Если после ротации оператор получает несоответствующую арность - операция пропускается


Период: При STP=1 период ротации для языка Oflameron версии 1.50 = 20 операторов. Т.е. при STP=20 функциональность символов никак не изменится.



Примеры выполнения с ротацией:

Пример 1 (STP=1):


text

Исходный код: fbcgde

Шаг 1: fbc выполняется как умножение (b*c = 1*3 = 3, h=3)

        Ротация: все символы сдвигаются вправо на 1

Шаг 2: gde теперь выполняется как вычитание (g получил функцию i)

        Вычисление: |d - e| = |5-7| = 2, h=2

        Ротация: снова сдвиг на 1

Пример 2 (STP=2):


text

Исходный код: fbc

Шаг 1: fbc выполняется как умножение (1*3=3, h=3)

        Ротация: сдвиг на 2 позиции

        Теперь: a>c(3), b>d(5), c>e(7), f>i(вычитание), и т.д.




Операторы (до ротации):

fXY - умножение: h = normalize(X * Y) (k+3) - размер оператора = 3 символа


gXY - сложение: h = normalize(X + Y) (k+3) - размер оператора = 3 символа


iXY - вычитание: h = normalize(Math.abs(X - Y)) (k+3) - размер оператора = 3 символа


lX - записать в l ASCII-код символа из позиции k + normalize(X) (k+2) - размер оператора = 2 символа. Читается именно символ из строки "очищенной" программы (т.е. константа, переменная, оператор без балластных символов)


mX - вывести символ с кодом normalize(X) на экран (показать результат) (k+2) - размер оператора = 2 символа


nq - заменить символ в позиции k + normalize(q) на символ с кодом normalize(h) (k+2) - размер оператора = 2 символа. Символ заменяется в "очищенном" коде программы


Общие правила:

Исполнение строго слева направо


k (указатель позиции в строке кода программы на Oflameron) - только увеличивается от 0 до конца строки программы


Движение по коду:


f,g,i: k+3


l,m,nq: k+2


Ошибка/неизвестный символ: k+1 (просто сдвинуться вправо на одну позицию в строке программы)


Ошибка: если ожидается операнд, но символ недопустим > k+1


Неизвестные символы: пропускаются (k+1)


Самомодификация: через оператор nq



Пояснения:


Текст кода программы на языке Oflameron может быть "разбавлен" любыми символами, не входящими в список SYMBOL_ORDER = ['a','b','c','d','e','p','t','v','w','h','q','l','k','f','g','i','m','n','s','x'].

Все остальные символы - "балластные" и перед выполнением кода в Трансляторе такой "разбавленный" код программы "очищается" (удаляются балластные символы).


Пример:


1. код программы   fcdfhdghdihbmhghdghdghdghdghcmhghcghcmhihdihdihbmhghcghcghcghcmhihdihcmhgheghdghbmhihcmhihbmh 

2. можно записать в другом виде     f(cdfhdghd)*ihbm.hgh/dghdgh=dghdgh12cmhghc-ghcmh**ihdih{dihbmhghcghc}ghcg-hc#mhihdi$$hcmhghe&ghdghbmhihcmhihbmh

Это просто один из вариантов обфускации.


Если Транслятор "очистит" текст 2 от лишних символов, получится тот же самый код программы 1 на языке Oflameron.


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



Теперь задача:


Закодируй на языке Oflameron текст "Mission Oflameron". Значение STP=0  Добавть в код программы балластные символы так, чтобы она больше напоминала длинное математическое уравнение, чем код программы.


https://oflameron.myfilebase.site/


AI Prompts Examples

http://barbie.oflameron.ru/






Comments

Popular posts from this blog

Perplexity Answer

Генерирование МОДЕЛЕЙ

Учим с ИИ