Короткий и острый: Учитывая два логических выражения, как проще всего вычислить уравнение их пересечения в языке, подобном Lua?
(Красный = Фильтр 1, Синий = Фильтр 2, Фиолетовый = Область пересечения)
Длинный и скорбящий:
Фильтр A это подмножество из Фильтр B , то есть: Фильтр B будет содержать все, что соответствует Фильтр A , плюс 0 или более объектов,На диаграмме Венна Фильтр A будет находиться внутри Фильтр B .
Как вычислить уравнение площади пересечения?
Aболее сложный пример:
- Фильтр X :
object.Col == 'GREEN' and (object.ID == 2 or object.ID == 64 or object.ID > 9001)
- Фильтр Y :
(object.Col == 'RED' or object.Col == 'GREEN') and (object.ID == 3 or object.ID > 22)
Фильтр A пересекается с Фильтр B .На диаграмме Венна они будут перекрываться.Уравнение для перекрывающейся области будет иметь вид:object.Col == 'GREEN' and (object.ID == 64 or object.ID > 9001)
Как будет рассчитываться это уравнение на языке, таком как Python или Haskell?
Я бы хотел в конечном итоге сделать это на Lua, но если бы Python, Haskell или другой язык предоставляли функциональностьЯ мог бы посмотреть на исходный код и преобразовать его.
Вот как я представляю фильтры в Lua:
filter = DataFilter(
{"and",
{"or",
{"==", "Col", "RED"},
{"==", "Col", "GREEN"},
},
{"or",
{"==", "ID", 3},
{">" , "ID", 22},
},
}
)
Пожалуйста, укажите мне правильное направление.