Математическое кодирование

 AI Prompting

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

Разработаем с помощью AI промпта одну из 100500 математических функций для генерирования заданной последовательности цифр (например "347")

Эти функции потом будем добавлять в язык текстового программирования Oflameron 
https://github.com/vallshmeleff/oflameron-obfuscation-language     

AI Запрос для разработки JavaScript функции distance-to-a-straight-line генерации заданной числовой последовательности "347" в заданных позициях результата вычисления. 

Функция distance-to-a-straight-line в качестве аббревиатуры dtasl будет использоваться в языке текстового программирования Oflameron  https://github.com/vallshmeleff/oflameron-obfuscation-language



1. Напиши функцию distance-to-a-straight-line на JavaScript в общем виде, вычисляющую расстояние d от точки M1(x1,y1) до прямой Ax+By+C=0


2. Подбери параметры x1, y1, A, B, C так, чтобы в числе d (расстояние от точки до прямой), преобразованном в текстовый вид, в позиции 3-5 (если считать начальной позицией 0) располагалась подстрока "347".

Например:


4153478943

или

0.53478921

или

7.03471248925


Экспоненциальную запись не использовать.


3. Сделай компактный HTML+JavaScript  адаптивный код веб страницы, оптимизированной для просмотра на смартфоне, который демонстрирует пример для пункта 2 и пишет на экран параметры x1, y1, A, B, C


4. Задай необходимые уточняющие вопросы



Ответ ИИ Derpseek




<!DOCTYPE html>

<html lang="ru">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes">

    <title>Расстояние до прямой</title>

    <style>

        * {

            box-sizing: border-box;

            margin: 0;

            padding: 0;

        }

        body {

            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;

            background: #f5f5f7;

            min-height: 100vh;

            display: flex;

            align-items: center;

            justify-content: center;

            padding: 16px;

        }

        .card {

            background: white;

            border-radius: 24px;

            padding: 24px 20px;

            box-shadow: 0 8px 20px rgba(0,0,0,0.05);

            width: 100%;

            max-width: 480px;

            border: 1px solid rgba(0,0,0,0.03);

        }

        h2 {

            font-size: 1.6rem;

            font-weight: 600;

            letter-spacing: -0.02em;

            margin-bottom: 20px;

            color: #1a1a1e;

            border-left: 5px solid #3478ff;

            padding-left: 16px;

        }

        .params {

            background: #f8f9fc;

            border-radius: 20px;

            padding: 18px 16px;

            margin: 16px 0 20px;

            border: 1px solid #e9ecf0;

        }

        .param-row {

            display: flex;

            flex-wrap: wrap;

            align-items: baseline;

            justify-content: space-between;

            padding: 8px 0;

            border-bottom: 1px dashed #d0d8e5;

        }

        .param-row:last-child {

            border-bottom: none;

        }

        .param-label {

            font-weight: 600;

            color: #2c3e50;

            font-size: 1rem;

        }

        .param-value {

            font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;

            font-size: 1.2rem;

            font-weight: 500;

            color: #1e293b;

            background: white;

            padding: 4px 12px;

            border-radius: 40px;

            border: 1px solid #dee4ed;

            word-break: break-word;

            max-width: 100%;

            text-align: right;

        }

        .result-block {

            background: linear-gradient(135deg, #f0f4ff 0%, #e9efff 100%);

            border-radius: 24px;

            padding: 20px 16px;

            margin: 24px 0 12px;

            border: 1px solid #cddfff;

        }

        .distance-title {

            font-size: 1rem;

            text-transform: uppercase;

            letter-spacing: 1px;

            color: #0047ab;

            opacity: 0.8;

            margin-bottom: 8px;

        }

        .distance-number {

            font-family: 'SF Mono', 'Fira Code', monospace;

            font-size: 2.2rem;

            font-weight: 700;

            color: #0b1e3c;

            line-height: 1.2;

            word-break: break-all;

            overflow-wrap: anywhere;

        }

        .highlight {

            background: #ffe7a0;

            color: #1a1e2b;

            padding: 0 4px;

            border-radius: 8px;

            font-weight: 800;

            border: 1px solid #f5b342;

        }

        .note {

            font-size: 0.9rem;

            color: #3e4a5e;

            background: #ffffffc0;

            padding: 12px 14px;

            border-radius: 18px;

            margin-top: 16px;

            border: 1px solid #ced8e7;

        }

        .footnote {

            text-align: center;

            margin-top: 22px;

            font-size: 0.8rem;

            color: #68748c;

        }

        hr {

            border: none;

            border-top: 1.5px solid #d3dcec;

            margin: 16px 0 8px;

        }

    </style>

</head>

<body>

    <div class="card">

        <h2>📏 Расстояние до прямой</h2>


        <div class="params">

            <div class="param-row">

                <span class="param-label">Точка M₁ (x₁, y₁):</span>

                <span class="param-value" id="pointCoords">(13.47, 8.01)</span>

            </div>

            <div class="param-row">

                <span class="param-label">Прямая Ax+By+C=0:</span>

                <span class="param-value" id="lineParams">A = 3, B = -4, C = 5</span>

            </div>

        </div>


        <div class="result-block">

            <div class="distance-title">расстояние d (число)</div>

            <div class="distance-number" id="distanceValue">0.53478921</div>

        </div>


        <div class="note">

            ⚡ Третья, четвёртая и пятая позиции десятичного представления d: 

            <strong><span id="highlightedDigits">347</span></strong> 

            (выделено <span class="highlight">желтым</span> выше)

        </div>


        <hr>

        <div class="footnote">

            формула: d = |Ax₁ + By₁ + C| / √(A² + B²)

        </div>

    </div>


    <script>

        (function() {

            // ---------- 1. Функция вычисления расстояния ----------

            function distanceToLine(x1, y1, A, B, C) {

                const numerator = Math.abs(A * x1 + B * y1 + C);

                const denominator = Math.sqrt(A * A + B * B);

                if (denominator === 0) return NaN; // защита от вырожденной прямой

                return numerator / denominator;

            }


            // ---------- 2. Подбор параметров для "347" на позициях 3-5 ----------

            // Желаемая подстрока: "347"

            // Нам нужно, чтобы в строковом представлении d символы с индексами 2,3,4 (3-я,4-я,5-я позиции) были "3","4","7".

            // Индексация с нуля: позиция 3 -> индекс 2, позиция 5 -> индекс 4.

            // Подбираем параметры вручную/эмпирически:

            // Возьмём точку M1(13.47, 8.01) и прямую 3x - 4y + 5 = 0.

            // A=3, B=-4, C=5, x1=13.47, y1=8.01.

            // Вычислим d = |3*13.47 -4*8.01 +5| / √(9+16) = |40.41 -32.04 +5| / 5 = |13.37| / 5 = 2.674.

            // Строка "2.674" — позиции: 0:'2', 1:'.', 2:'6', 3:'7', 4:'4' → (6,7,4) не подходит.

            // 

            // Подберём так, чтобы первые цифры были "0.53478921..." (как в примере).

            // Значит d должно быть ~0.5347..., тогда позиции: 0:'0', 1:'.', 2:'5', 3:'3', 4:'4'? Нет, нам нужно 3:'4',4:'7'?? 

            // По условию: "в позиции 3-5 располагалась подстрока '347'". То есть 3-й символ = '3', 4-й = '4', 5-й = '7'.

            // В примере "0.53478921": позиции: 0:'0', 1:'.', 2:'5', 3:'3', 4:'4', 5:'7' → (3,4,7) на местах 3,4,5 — идеально!

            // Значит d должно быть в районе 0.534789... (3-й символ '3', 4-й '4', 5-й '7').

            // 

            // Подберём параметры, чтобы d ≈ 0.534789...

            // Возьмём простые числа: A=7, B=3, C=1. Точка M1(0.1, 0.2). 

            // d = |7*0.1 + 3*0.2 + 1| / √(49+9) = |0.7+0.6+1| / √58 ≈ |2.3| / 7.6158 ≈ 0.3020 — мимо.

            // 

            // Легче взять целые коэффициенты, но получить дробную часть как надо. Пусть знаменатель (√(A²+B²)) сделает своё дело.

            // Подберём эмпирически: нам нужно d = 0.534789... = N / √(A²+B²), где N = |A·x1 + B·y1 + C|.

            // Можно взять A=3, B=4 (√(9+16)=5), тогда нужно N = 0.534789·5 = 2.673945. Значит |3x1+4y1+C| ≈ 2.673945.

            // Пусть C=0, тогда 3x1+4y1 ≈ 2.673945. Например, x1=0.5, y1=0.29348625. Тогда 3*0.5=1.5, 4*0.29348625=1.173945, сумма = 2.673945.

            // Но нам нужен положительный числитель, поэтому модуль совпадает. 

            // Это даст d = 2.673945/5 = 0.534789 — строка "0.534789". Позиции: 0:'0',1:'.',2:'5',3:'3',4:'4',5:'7' — ровно "347" на 3-5 позициях! Отлично.

            // Но x1=0.5, y1≈0.29348625 — длинная дробь. Упростим для читаемости, но сохраним точность.

            // Можно округлить до 0.2935, тогда d слегка изменится, но в строке будет "0.53478..." — проверим: 3*0.5 + 4*0.2935 + 0 = 1.5 + 1.174 = 2.674. /5 = 0.5348. Строка "0.5348" — позиции: 0,1,2,3,4,... 3:'4'? уже нет, там '8'. Не подходит.

            // Значит надо сохранить точность, но в отображении можно показать как дробь.

            // 

            // Используем x1 = 0.5, y1 = 0.29348625, A=3, B=4, C=0.

            // Тогда d в точности 0.534789.


            // Задаём параметры согласно подбору

            const x1 = 0.5;

            const y1 = 0.29348625;  // точно даёт 0.534789

            const A = 3;

            const B = 4;

            const C = 0;


            // Вычисляем расстояние

            const d = distanceToLine(x1, y1, A, B, C);


            // Форматируем для отображения (без потери точности, но с ограничением знаков для читаемости)

            // Нам важно показать достаточное количество знаков, чтобы были видны цифры 347.

            const dString = d.toString(); // "0.534789" (может быть экспоненциальная запись, но здесь нет)

            // Для надёжности форсируем фиксированное количество знаков, но оставим как есть.

            

            // Функция для выделения цветом 3-5 символов (индексы 2,3,4)

            function highlightSubstring(str, start, end) {

                if (str.length <= start) return str; // слишком короткая строка

                const before = str.slice(0, start);

                const highlightPart = str.slice(start, end + 1);

                const after = str.slice(end + 1);

                return `${before}<span class="highlight">${highlightPart}</span>${after}`;

            }


            const highlightedD = highlightSubstring(dString, 3, 5); // позиции 3-5 → индексы 2,3,4


            // Отображаем параметры (с сокращённой записью для y1, но точность сохранена в вычислениях)

            document.getElementById('pointCoords').innerHTML = `(${x1}, ${y1})`;

            document.getElementById('lineParams').innerHTML = `A = ${A}, B = ${B}, C = ${C}`;

            document.getElementById('distanceValue').innerHTML = highlightedD;

            document.getElementById('highlightedDigits').innerText = dString.slice(3,6); // "347"


            // Дополнительная проверка

            console.log('d =', dString, 'подстрока (3-5):', dString.slice(2,5));

        })();

    </script>

</body>

</html>





AI Code Generation

https://oflameron.com

https://oflameron.myfilebase.site/


Комментарии

Популярные сообщения из этого блога

Crypto Tech

Crypto Tech

Бесплатные JAVA проекты