Transformada entera de Walsh–Hadamard
Aplica la transformada de Walsh–Hadamard sin normalizar a una secuencia no vacía de enteros acotados cuya longitud sea potencia de dos y no supere 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| Proyecto | Rechaza longitudes inválidas y booleanos, y comprueba que dos aplicaciones multiplican el original por su longitud. |
|---|---|
| Revisa antes de aplicar | Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios. |
| Modelos | Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado. |
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 outMantén visibles las convenciones de la transformada al refactorizar
WalshAster es un espacio de programación para Windows donde abordar cambios de código con un modelo de IA conectado. Las refactorizaciones de cálculo son más fáciles de evaluar cuando primero se establece la convención original. Describe la entrada admitida, la estructura de salida esperada y la regla de escala antes de pedir al asistente que reorganice bucles o introduzca otra implementación.
El ejemplo de transformada entera de Walsh–Hadamard proporciona una tarea concreta para esa conversación. Pide al modelo que inspeccione los pares de actualización y los límites de longitud de entrada en el contexto de tu módulo. Explicita la convención del ejemplo para evitar que un nombre conocido lleve al asistente a suponer una variante normalizada u otro orden de resultados.
Durante la revisión, compara el código propuesto con salidas pequeñas conocidas y con las propiedades que tu proyecto debe conservar. En este ejemplo, aplicar la transformada dos veces proporciona una comprobación útil de escala, junto con los casos de entrada rechazada. Ejecuta tú las comprobaciones y examina cualquier código llamante que interprete la salida; una refactorización interna no debe cambiar silenciosamente la convención de datos expuesta allí.
Elige un modelo de IA sin restricciones solo mediante un endpoint admitido compatible con OpenAI o de Anthropic que lo ofrezca. Configura las credenciales necesarias y comprueba la capacidad de contexto y las herramientas. Las restricciones del modelo conectado siguen dependiendo del proveedor, y su simplificación propuesta sigue necesitando pruebas de tu implementación real y de sus comprobaciones.
Preguntas de revisión para mantener transformadas
- ¿Qué convención debo documentar antes de pedir una refactorización?
Indica el orden de salida, la escala y las longitudes de entrada admitidas, junto con los tipos de elementos que maneja tu módulo. Incluye una entrada y salida pequeñas conocidas. Así evitas que una propuesta sustituya una convención de transformada por otra con el mismo nombre.
- ¿Basta por sí sola una comprobación de doble transformada?
Es útil para la convención ilustrada, pero debe acompañar a salidas conocidas y pruebas de límites de entrada. Comprueba también la interpretación del código llamante. Conservar una propiedad algebraica no demuestra necesariamente que el orden y el comportamiento de la interfaz sigan siendo los esperados.
- ¿Cómo debo revisar un cambio que modifica la entrada?
Determina primero si el contrato existente permite modificarla. Incluye los consumidores que reutilizan los valores originales y prueba esa reutilización explícitamente. Una propuesta para ahorrar memoria cambia el comportamiento observable si esos consumidores dependen de una secuencia de entrada intacta.
- ¿Usar otro modelo cambia la verificación necesaria?
No. Conserva las mismas entradas admitidas, resultados conocidos y comprobaciones de escala al considerar la propuesta de otro modelo. La elección puede cambiar la explicación o el código sugerido, pero no demuestra la corrección ni sustituye la verificación del proyecto.
WalshAster · Actualizado 2026-10-25