Целочисленное преобразование Уолша–Адамара
WalshAster объединяет код преобразования и диалог с совместимой моделью в контексте проекта. Изучите каждое предложенное обновление «бабочки» и проверьте результат тождеством двойного преобразования перед принятием правок.
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| Проект | Отклоните неверные длины и логические значения, затем проверьте, что двойное преобразование умножает исходные числа на длину. |
|---|---|
| Проверьте перед применением | Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями. |
| Подключение | Базовый URL, учётные данные и доступный сервер. |
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