Цілочисельне перетворення Волша–Адамара
Застосуйте ненормоване перетворення Волша–Адамара до непорожньої послідовності обмежених цілих чисел завдовжки у степінь двійки до 256.
def walsh_transform(values):
out = list(values)
n = len(out)
if not 1 <= n <= 256 or n & (n - 1):
raise ValueError("length.power_two")
if any(type(v) is not int or abs(v) > 1000000 for v in out):
raise ValueError("value.range")
step = 1
while step < n:
for start in range(0, n, 2 * step):
for j in range(start, start + step):
a, b = out[j], out[j + step]
out[j], out[j + step] = a + b, a - b
step *= 2
return out| Проєкт | Відхиліть хибні довжини й логічні значення та перевірте, що подвійне перетворення множить початкові числа на довжину. |
|---|---|
| Перевірте перед застосуванням | Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами. |
| Моделі | Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані. |
def walsh_transform(values):
out = list(values)
n = len(out)
if not 1 <= n <= 256 or n & (n - 1):
raise ValueError("length.power_two")
if any(type(v) is not int or abs(v) > 1000000 for v in out):
raise ValueError("value.range")
step = 1
while step < n:
for start in range(0, n, 2 * step):
for j in range(start, start + step):
a, b = out[j], out[j + step]
out[j], out[j + step] = a + b, a - b
step *= 2
return outЗберігайте домовленості перетворення явними під час рефакторингу
WalshAster — робоче середовище програмування у Windows для опрацювання змін коду з підключеною моделлю ШІ. Обчислювальні рефакторинги легше оцінювати, якщо спочатку визначити початкову домовленість. Опишіть допустимий вхід, очікувану форму виходу та правило масштабування перед проханням до асистента перебудувати цикли або запропонувати іншу реалізацію.
Приклад цілочисельного перетворення Волша—Адамара дає конкретне завдання для такого обговорення. Попросіть модель перевірити пари оновлень і межі довжини входу в контексті власного модуля. Зберігайте домовленість прикладу явною, щоб знайома назва не спонукала асистента припустити нормалізований варіант або інший порядок результатів.
Під час перевірки порівняйте запропонований код із невеликими відомими результатами та властивостями, які проєкт має зберігати. Для цього прикладу подвійне застосування перетворення дає корисну перевірку масштабування поряд із випадками відхилених входів. Самостійно запустіть перевірки й огляньте код виклику, який трактує результат; внутрішній рефакторинг не повинен непомітно змінювати видиму йому домовленість щодо даних.
Вибирайте модель ШІ без обмежень лише через підтримувану сумісну з OpenAI або Anthropic кінцеву точку, яка її надає. Налаштуйте потрібні облікові дані й перевірте місткість контексту та інструменти. Обмеження підключеної моделі залишаються залежними від постачальника, а запропоноване нею спрощення все одно потребує підтвердження фактичною реалізацією й тестами.
Питання для перевірки супроводу перетворень
- Яку домовленість задокументувати перед запитом на рефакторинг?
Зазначте порядок результатів, масштабування й допустимі довжини входу, а також типи елементів, які обробляє модуль. Додайте невеликий відомий вхід і вихід. Це запобігає підміні іншою домовленістю перетворення під тією самою назвою.
- Чи достатньо лише перевірки подвійного перетворення?
Вона корисна для наведеної домовленості, але має доповнюватися відомими результатами й тестами меж входу. Перевірте також трактування кодом виклику. Збережена алгебрична властивість не обов’язково доводить, що порядок і поведінка інтерфейсу відповідають очікуванням застосунку.
- Як перевіряти зміну, що модифікує вхідні дані?
Спочатку визначте, чи дозволяє наявний контракт модифікацію. Додайте код виклику, що повторно використовує початкові значення, і явно протестуйте таке використання. Пропозиція економії пам’яті змінює спостережувану поведінку, якщо цей код покладається на незмінність вхідної послідовності.
- Чи змінює використання іншої моделі потрібні перевірки?
Ні. Залишайте ті самі допустимі входи, відомі результати й перевірки масштабування, розглядаючи пропозицію іншої моделі. Вибір моделі може змінити пояснення або запропонований код, але не встановлює правильності й не замінює перевірок проєкту.
WalshAster · Оновлено 2026-10-25