Un ingeniero de software documenta el uso de la librería CP-SAT de Google para resolver un rompecabezas físico tridimensional impreso en 3D. El dispositivo consiste en un 'mazorca' con ranuras y piezas de 'maíz' formadas por granos que deben encajar perfectamente sin solapamientos ni huecos. El autor, tras intentar resolverlo manualmente, delegó la tarea a Claude, quien generó un script en Python que utilizó la herramienta OR-Tools CP-SAT en lugar de un algoritmo de retroceso recursivo más básico.
El artículo explica que CP-SAT es una biblioteca industrial diseñada para problemas de optimización y satisfacción de restricciones. Funciona modelando el problema como un conjunto de variables binarias y restricciones que deben cumplirse simultáneamente. En el caso del rompecabezas, se modela como un problema de cobertura exacta, donde cada pieza ocupa un espacio único y cada espacio está cubierto por una pieza. El código resultante es más complejo que el de retroceso debido a la necesidad de enumerar posiciones, pero la invocación del solver es directa y eficiente.
Para consolidar el aprendizaje, el autor y sus compañeros de la empresa Recurse desarrollaron una implementación de Sudoku usando CP-SAT. Este ejemplo demuestra la facilidad de definir variables y restricciones básicas, como la regla de que cada fila, columna y cuadrante debe contener un número único. La lección principal es que, ante problemas de satisfacción de restricciones, es preferible utilizar solvers especializados y consultar la documentación oficial, evitando la reinención de algoritmos complejos desde cero.
