Jugadas de Nim con regla normal
Elige una reducción ganadora de Nim normal con hasta 128 montones de cero a mil millones de objetos.
def nim_move(piles):
if type(piles) not in (list, tuple) or len(piles) > 128 or any(type(v) is not int or not 0 <= v <= 10**9 for v in piles):
raise ValueError("nim.piles")
balance = 0
for pile in piles:
balance ^= pile
if balance == 0:
return None
for index, pile in enumerate(piles):
reduced = pile ^ balance
if reduced < pile:
return index, reducedProyecto
Prueba posiciones vacías y perdedoras, devolviendo ninguna jugada si el xor es cero y rechazando tamaños negativos o booleanos.
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 nim_move(piles):
if type(piles) not in (list, tuple) or len(piles) > 128 or any(type(v) is not int or not 0 <= v <= 10**9 for v in piles):
raise ValueError("nim.piles")
balance = 0
for pile in piles:
balance ^= pile
if balance == 0:
return None
for index, pile in enumerate(piles):
reduced = pile ^ balance
if reduced < pile:
return index, reducedLleva un cambio de reglas hasta la aplicación que lo utiliza
NimClover es un espacio de programación con IA para Windows destinado a desarrollar software con reglas y decisiones explícitas. Elige la carpeta del proyecto y describe la regla que necesitas implementar o reparar. El asistente conectado puede examinar el código pertinente y analizar una propuesta, mientras la conversación mantiene disponibles para tu revisión las entradas aceptadas y los resultados observables.
El ejemplo nim.py puede servir de base para una tarea de selección de jugadas bajo las reglas de juego normal. Pregunta cómo representa la aplicación una jugada, qué hace cuando la función auxiliar no devuelve ninguna selección y si las reglas activas coinciden con los supuestos de la función. Usa esas preguntas para examinar tu propio proyecto. Convierten una pequeña función ilustrativa en una tarea de integración de software, en vez de afirmar que el espacio de trabajo incluye un motor de juego.
Para elegir un modelo de IA sin restricciones, conecta un modelo disponible mediante un endpoint compatible con OpenAI o de Anthropic admitido. Proporciona credenciales cuando sean necesarias y comprueba sus capacidades reales. Tras revisar los cambios propuestos, prueba tanto una jugada devuelta como la ruta sin selección a través del código que las utiliza. Verifica que los cambios de estado concuerden con la representación devuelta. El resultado útil es una función coherente en tu aplicación, respaldada por comprobaciones, y no un algoritmo aislado que nunca llega correctamente a la interfaz.
Preguntas para integrar decisiones basadas en reglas
¿La ausencia de una jugada seleccionada significa que no hay jugadas legales?
No necesariamente. Interpreta el valor devuelto por la función según su contrato y el estado actual del juego. Pregunta cómo distingue el código consumidor entre estrategia y legalidad antes de traducir la ausencia de selección en un mensaje o finalizar la interacción.
¿Qué debo especificar sobre las reglas?
Indica la condición de victoria y cualquier variante que afecte a las decisiones válidas. El ejemplo asume juego normal. Una regla distinta para la última jugada necesita razonamiento y comprobaciones independientes, en vez de una función sin cambios con una etiqueta nueva en la interfaz.
¿Cómo debo probar una jugada devuelta?
Comprueba que la entrada indicada exista, que el nuevo valor esté permitido y que el código consumidor lo aplique según lo previsto. Incluye el estado resultante de la aplicación. Un par válido devuelto por la función no acredita que la interfaz actualice la entrada correcta.
¿Puede ampliarse este flujo de trabajo hasta un juego completo?
Puedes desarrollar más funciones del proyecto mediante tareas adicionales delimitadas. Define por separado la representación visual, la gestión de entradas y las transiciones de estado, y prueba después su integración. El espacio de programación y un ejemplo de estrategia no establecen que esas funciones ya estén implementadas.
NimClover · Actualizado 2026-10-25