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

 AI Prompting

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

Закодируем число (например, текст "347") с помощью математической формулы и параметров к ней.

Само знание о том, какая формула использована и в какой позиции числовой последовательности имеется только на стороне отправителя и получателя.

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

Сделаем это с помощью ИИ промпта

<!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: linear-gradient(145deg, #f0f4fa 0%, #e6ecf5 100%);

            min-height: 100vh;

            display: flex;

            align-items: center;

            justify-content: center;

            padding: 16px;

        }

        .card {

            background: rgba(255,255,255,0.9);

            backdrop-filter: blur(10px);

            -webkit-backdrop-filter: blur(10px);

            border-radius: 32px;

            padding: 24px 20px;

            box-shadow: 0 20px 40px rgba(0,10,30,0.15), 0 4px 12px rgba(0,0,0,0.05);

            width: 100%;

            max-width: 520px;

            border: 1px solid rgba(255,255,255,0.5);

        }

        h2 {

            font-size: 1.8rem;

            font-weight: 700;

            background: linear-gradient(135deg, #1e293b, #2d3b55);

            -webkit-background-clip: text;

            -webkit-text-fill-color: transparent;

            margin-bottom: 20px;

            padding-bottom: 8px;

            border-bottom: 3px solid #3478ff;

        }

        .section {

            background: white;

            border-radius: 24px;

            padding: 20px 16px;

            margin: 18px 0;

            box-shadow: 0 4px 12px rgba(0,0,0,0.02);

            border: 1px solid #eef2f6;

        }

        .param-grid {

            display: flex;

            flex-wrap: wrap;

            gap: 12px;

            justify-content: space-between;

        }

        .param-item {

            flex: 1 1 calc(50% - 12px);

            min-width: 140px;

            background: #f8fafd;

            border-radius: 18px;

            padding: 14px;

            border: 1px solid #dde3ed;

        }

        .param-label {

            font-size: 0.85rem;

            text-transform: uppercase;

            letter-spacing: 0.5px;

            color: #4a5a72;

            margin-bottom: 8px;

        }

        .param-value {

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

            font-size: 1.4rem;

            font-weight: 600;

            color: #0b1e3c;

            line-height: 1.2;

            word-break: break-word;

        }

        .polar-block {

            background: linear-gradient(120deg, #eef4ff, #ffffff);

            border-radius: 28px;

            padding: 20px;

            margin: 24px 0;

            border: 2px solid #bfd3ff;

        }

        .polar-title {

            font-size: 1rem;

            font-weight: 600;

            color: #2c3e66;

            margin-bottom: 16px;

            display: flex;

            align-items: center;

            gap: 8px;

        }

        .polar-title span {

            background: #3478ff;

            color: white;

            padding: 4px 12px;

            border-radius: 40px;

            font-size: 0.85rem;

        }

        .number-box {

            background: #0b1424;

            color: #e3e9ff;

            padding: 20px 18px;

            border-radius: 20px;

            font-family: 'SF Mono', monospace;

            font-size: 1.8rem;

            font-weight: 500;

            letter-spacing: 2px;

            word-break: break-all;

            text-align: center;

            border: 1px solid #2e3f66;

            box-shadow: inset 0 2px 8px rgba(0,0,0,0.5);

            margin: 12px 0;

        }

        .highlight {

            background: #f7d44c;

            color: #1a1e2b;

            padding: 0 6px;

            border-radius: 14px;

            font-weight: 800;

            border: 1px solid #e5b800;

        }

        .digits-hint {

            background: #d9e5ff;

            border-radius: 30px;

            padding: 12px 18px;

            font-size: 1rem;

            color: #001b44;

            border: 1px solid #9bb2e0;

            margin-top: 12px;

        }

        .footnote {

            font-size: 0.85rem;

            color: #4a5f7c;

            text-align: center;

            margin-top: 20px;

            border-top: 1px dashed #b5c6dd;

            padding-top: 16px;

        }

        .badge {

            background: #3478ff10;

            border-radius: 16px;

            padding: 8px 16px;

            font-size: 0.9rem;

            color: #0047ab;

            border: 1px solid #3478ff30;

        }

        .error-badge {

            background: #ff4d4d10;

            color: #b30000;

            border: 1px solid #ff4d4d40;

            border-radius: 16px;

            padding: 8px 16px;

            font-size: 0.9rem;

            margin-top: 10px;

        }

        .tooltip {

            background: #eef2f6;

            border-radius: 12px;

            padding: 6px 12px;

            font-size: 0.8rem;

            color: #3a4c66;

        }

    </style>

</head>

<body>

    <div class="card">

        <h2>🎯 Полярные параметры прямой</h2>


        <!-- Исходные коэффициенты -->

        <div class="section">

            <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; flex-wrap: wrap; gap: 8px;">

                <div class="badge">Ax + By + C = 0</div>

                <div class="tooltip">p > 0, "347" на позициях 3-5</div>

            </div>

            <div class="param-grid">

                <div class="param-item">

                    <div class="param-label">A</div>

                    <div class="param-value" id="paramA">3</div>

                </div>

                <div class="param-item">

                    <div class="param-label">B</div>

                    <div class="param-value" id="paramB">4</div>

                </div>

                <div class="param-item">

                    <div class="param-label">C</div>

                    <div class="param-value" id="paramC">-0.173946</div>

                </div>

            </div>

            <div id="errorMessage" style="display: none;" class="error-badge"></div>

        </div>


        <!-- Полярные параметры -->

        <div class="polar-block">

            <div class="polar-title">

                <span>⍴</span> Полярное расстояние p (высокая точность)

            </div>

            <div class="number-box" id="polarDistance">0.0347892000000</div>

            

            <div class="digits-hint">

                🔍 Позиции 3-5 (индексы 3,4,5): 

                <strong class="highlight" id="highlightedPart">347</strong> 

                (выделено желтым выше)

                <div style="font-size:0.85rem; margin-top:6px; color:#2c3e66;">

                    строка: "<span id="fullString">0.0347892000000</span>"

                </div>

            </div>


            <div style="display: flex; gap: 16px; margin-top: 24px; flex-wrap: wrap;">

                <div style="flex: 1; min-width: 130px;">

                    <div class="param-label">cos φ (точно)</div>

                    <div class="param-value" id="cosPhi">-0.6</div>

                </div>

                <div style="flex: 1; min-width: 130px;">

                    <div class="param-label">sin φ (точно)</div>

                    <div class="param-value" id="sinPhi">-0.8</div>

                </div>

            </div>

            <div style="margin-top: 16px; color:#2a3f66; background:#dee9ff; border-radius: 18px; padding: 12px; font-size:0.95rem;">

                ⚡ φ — угол нормали (cos φ = ±A/√(A²+B²), sin φ = ±B/√(A²+B²))<br>

                знак выбран так, чтобы p ≥ 0

            </div>

        </div>


        <div class="footnote">

            p = |C| / √(A² + B²) &nbsp; | &nbsp; x·cosφ + y·sinφ - p = 0

        </div>

    </div>


    <script>

        (function() {

            // 1. Функция для вычисления полярных параметров с проверкой на вырожденность

            function polarParametersFromLine(A, B, C) {

                // Проверка на вырожденную прямую

                if (Math.abs(A) < 1e-12 && Math.abs(B) < 1e-12) {

                    throw new Error("Ошибка: A и B не могут одновременно равняться 0 (вырожденная прямая)");

                }

                

                // Нормализующий множитель с высокой точностью

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

                

                // Полярное расстояние p = |C| / norm (всегда положительное)

                const p = Math.abs(C) / norm;

                

                // Выбираем знак нормали так, чтобы p было положительным в уравнении x·cosφ + y·sinφ - p = 0

                // Если C ≥ 0, оставляем знак (A,B), если C < 0, берём (-A,-B)

                let cosPhi, sinPhi;

                

                if (C >= 0) {

                    cosPhi = A / norm;

                    sinPhi = B / norm;

                } else {

                    cosPhi = -A / norm;

                    sinPhi = -B / norm;

                }

                

                // Возвращаем с высокой точностью (без округления)

                return {

                    p: p,

                    cosPhi: cosPhi,

                    sinPhi: sinPhi,

                    norm: norm

                };

            }


            // 2. Подобранные параметры для "347" на позициях 3-5 (индексы 3,4,5)

            // Чтобы получить p = 0.0347892... нужно |C|/√(A²+B²) = 0.0347892

            // Берём A=3, B=4 → √(9+16)=5, тогда |C| = 5 * 0.0347892 = 0.173946

            // Берём C = -0.173946 (отрицательное, чтобы показать смену знака нормали)

            

            const A = 3;

            const B = 4;

            const C = -0.173946;  // точно даёт p = 0.0347892

            

            try {

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

                const polar = polarParametersFromLine(A, B, C);

                let p = polar.p;

                const cosPhi = polar.cosPhi;

                const sinPhi = polar.sinPhi;

                

                // Для большей точности и гарантии "347" на нужных позициях,

                // используем формат с фиксированной точностью (12 знаков)

                // Но чтобы точно получить "347" на индексах 3,4,5, немного скорректируем p

                // при отображении, сохраняя математическую корректность

                

                // Точное значение p = 0.173946 / 5 = 0.0347892

                // Но из-за двоичного представления может быть 0.0347891999999...

                // Принудительно форматируем как строку с нужными цифрами

                

                // Создаём строку с фиксированным количеством знаков, чтобы гарантировать "347"

                const pString = p.toFixed(15); // "0.034789200000000"

                

                // Находим позицию десятичной точки

                const dotIndex = pString.indexOf('.');

                

                // Формируем строку, где после точки идут цифры, и на индексах 3,4,5 от начала строки

                // находится "347". Для p=0.0347892... индексы:

                // 0:'0', 1:'.', 2:'0', 3:'3', 4:'4', 5:'7', 6:'8', ...

                

                // Функция подсветки подстроки с индекса start по end

                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}`;

                }

                

                // Подсвечиваем символы с индексами 3,4,5 (позиции 3-5)

                const highlightedP = highlightSubstring(pString, 3, 5);

                

                // Получаем подстроку "347" для отображения в подсказке

                const highlightedSubstr = pString.slice(3, 6);

                

                // Отображаем параметры

                document.getElementById('paramA').innerText = A;

                document.getElementById('paramB').innerText = B;

                document.getElementById('paramC').innerText = C;

                document.getElementById('polarDistance').innerHTML = highlightedP;

                document.getElementById('highlightedPart').innerText = highlightedSubstr;

                document.getElementById('fullString').innerText = pString;

                

                // cosφ и sinφ с высокой точностью (12 знаков)

                document.getElementById('cosPhi').innerText = cosPhi.toFixed(15);

                document.getElementById('sinPhi').innerText = sinPhi.toFixed(15);

                

                // Скрываем сообщение об ошибке

                document.getElementById('errorMessage').style.display = 'none';

                

                console.log('Полярные параметры:', {

                    p: p,

                    pString: pString,

                    highlighted: highlightedSubstr,

                    cosPhi: cosPhi,

                    sinPhi: sinPhi

                });

                

            } catch (error) {

                // Показываем ошибку

                document.getElementById('errorMessage').style.display = 'block';

                document.getElementById('errorMessage').innerText = error.message;

                

                // Устанавливаем значения по умолчанию

                document.getElementById('paramA').innerText = A;

                document.getElementById('paramB').innerText = B;

                document.getElementById('paramC').innerText = C;

                document.getElementById('polarDistance').innerHTML = 'Ошибка';

                document.getElementById('cosPhi').innerText = '—';

                document.getElementById('sinPhi').innerText = '—';

                //   https://github.com/vallshmeleff/oflameron-obfuscation-language

            }

        })();

    </script>

</body>

</html>


https://chat.deepseek.com/share/k2gg7hne1rs6s78mj9




AI Code Generation

https://oflameron.com

https://oflameron.myfilebase.site/


Комментарии

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

Crypto Tech

Crypto Tech

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