У меня есть много списков переменного размера, содержащих экземпляры одного и того же класса с атрибутом foo, и для каждого списка я должен применять правила, такие как:
- , если есть элемент foo = A, не может быть элементовс foo в [B, C, D]
- , если есть элемент foo = X, должен быть хотя бы один с foo в [Y, Z]
- , может быть между MIN и MAXelements foo = BAR
, объединяющий три вышеупомянутых правила, вероятно, достаточно, чтобы выразить любое подобное ограничение, которое мне когда-либо понадобится.Это что-то вроде проверки зависимостей в программных пакетах, но у меня есть количества и не хватает версий:)
Наивный подход был бы:
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..
Является ли это проблемой Ограничение программирования ?На самом деле мне не нужно решать что-то, чтобы получить результат, мне нужно проверить свой список на предмет некоторых ограничений и проверить, удовлетворены ли они или нет.Как бы вы классифицировали эту проблему и как бы вы ее решили?
Для чего бы я ни был, я пишу код на Python, но я приветствую общий ответ по программированию :) Если окажется, что я должен вникнуть в программирование с ограничениямиЯ, вероятно, начну с попытки python-constraint .