сравнение / пересекающиеся критерии сравнения - PullRequest
0 голосов
/ 31 августа 2009

Если есть какой-либо открытый исходный код, который уже делает это, мне интересно услышать об этом. Но я этого еще не видел, поэтому пытаюсь свернуть свое.

Пример:

variable x = compareCriteriaBetween 3 and 6
variable y = compareCriteriaLesserThanOrEqual 5

Трудная часть для меня - найти элегантный способ сравнить критерии сравнения и создать пересечение. В этом примере пересечение между ними «между 3 и 5».

Как я могу реализовать это способом «не спрашивай»? Обратите внимание, что compareCriteria может быть совершенно не связан (например, setsWithLetter и vs.Number).

Ответы [ 2 ]

1 голос
/ 01 сентября 2009

Если в ваших выражениях есть только константы, вы должны быть в безопасности от неразрешимости (я думаю!). Проблемы возникают, как только вы можете выразить, например, общие утверждения о целых числах с + - * / (см. арифметика Пеано ).

Даже если вы остаетесь в области разрешимости, не существует алгоритма, который мог бы принимать произвольные операторы P (x) и Q (x) и вычислять оператор R (x), эквивалентный P (x) & Q (x) для всех x, где x может охватывать любой домен (целые числа, строки, матрицы, действительные числа, комплексные числа, логические операторы [упс, обратно в неразрешимую территорию!], ...). Вам нужны специфические для домена приемы и строго разграниченные языки , в которых сформулированы P, Q и R. Для определенных доменов существуют программные продукты - один из них называется Mathematica ...

Попытайтесь вернуться к основам: какую проблему вы пытаетесь решить?

1 голос
/ 31 августа 2009

Если вас просто интересуют простые критерии, такие как менее равно или между в целых числах / числах с плавающей запятой, вы можете переписать между 3 и 6 как ( больше равно 3 и меньше равно 6 ). Если вы объедините это с логическими и с меньше равным 5 , вы можете использовать булеву алгебру для получения ( больше равно 3 и ( меньше равно 6 и меньше равно 5 )) перед тем, как упростить внутреннюю скобку до значения меньше равно 5 и переписать результат как от 3 до 5 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...