I tienen muchas listas de tamaño variable que contiene las instancias de la misma clase con foo atributo, y para cada lista que debe aplicar reglas como:¿Cómo verificar las restricciones entre los elementos en una lista/es esta Programación de Restricciones?
- si hay un elemento foo = A no puede haber elementos con foo en [ B, C, D]
- si hay un foo elemento = X debe por al menos una con foo en [y, Z]
- no puede haber entre elementos MIN y MAX foo = bar
la combinación de las tres reglas anteriores probablemente sea suficiente para expresar cualquier restricción similar Lo necesitaré alguna vez Es algo así como la comprobación de dependencia en paquetes de software, pero tengo cantidades y versiones falta :)
un enfoque ingenuo sería:
R_CONFLICT={ A: [B,C,D] }
R_DEPENDS ={ X: [ [Y,Z], W, .. } # means: A depends on either Y or Z, and W
R_MIN ={BAR: n, BAZ: m}
R_MAX ={BAR: o, BAZ: p}
# now just loop over lists to check them..
¿Es un problema de Constraint programming? Realmente no necesito resolver algo para obtener un resultado, necesito validar mi lista contra algunas restricciones y comprobar si están satisfechas o no. ¿Cómo clasificaría este problema y cómo lo resolvería?
Por lo que vale, estoy codificando en Python, pero doy la bienvenida a una respuesta de programación genérica :) Si resulta que debo ahondar en la programación de restricciones Probablemente comenzaré probando python-constraint.