Ho molti elenchi di variabili dimensioni contenenti istanze della stessa classe con l'attributo foo, e per ogni lista che deve applicare le regole come:Come controllare i vincoli tra gli elementi di una lista/è questa programmazione di vincoli?
- se c'è un elemento foo = A non ci possono essere elementi con foo in [ B, C, D]
- se c'è un foo elemento = X deve da almeno uno con foo in [Y, Z]
- ci può essere tra elementi MIN e MAX foo = bar
la combinazione delle tre regole precedenti è probabilmente sufficiente per esprimere un simile vincolo Avrò mai bisogno E 'qualcosa di simile a dipendenza del check-in pacchetti software, ma ho le quantità e le versioni mancanza :)
un approccio ingenuo sarebbe:
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..
questo è un problema di Constraint programming? Non ho effettivamente bisogno di risolvere qualcosa per ottenere un risultato, ho bisogno di convalidare la mia lista contro alcuni vincoli e verificare se sono soddisfatti o meno. Come classificheresti questo problema e come lo risolveresti?
Per quello che vale, sto codificando in Python, ma accolgo con favore una risposta di programmazione generica :) Se risulta che devo approfondire la programmazione dei vincoli probabilmente inizierò provando python-constraint.