algorithm - 查找互斥数据以满足多个标准
问题描述
我试图找出一种算法,它可以让我以编程方式解决以下问题。
有一个读书俱乐部有一套允许加入的规则。您必须阅读 3 本书,每本书至少符合以下规则之一。所有 3 个规则标准必须由单独的书来满足。这些规则如下:
规则:
ID | 场地 | 比较器 | 价值 |
---|---|---|---|
1 | 作者 | IN |
[“约翰斯坦贝克”,“JD塞林格”] |
2 | 评分 | >= |
4.0 |
3 | 页数 | > |
300 |
以下是用户迄今为止阅读的书籍列表:
图书:
ID | 标题 | 作者 | 评分 | 页面 |
---|---|---|---|---|
1 | 人鼠之间 | 约翰斯坦贝克 | 3.88 | 107 |
2 | 杀死一只知更鸟 | 哈珀·李 | 4.28 | 281 |
3 | 动物农场 | 乔治奥威尔 | 3.96 | 112 |
4 | 愤怒的葡萄 | 约翰斯坦贝克 | 3.98 | 464 |
5 | 1984年 | 乔治奥威尔 | 4.19 | 328 |
6 | 麦田里的守望者 | JD塞林格 | 3.81 | 277 |
我编写了一个函数,它可以让我用一本特定的书检查一个特定的规则,以返回一个布尔值响应,指示该书是否满足给定的规则。该函数具有以下签名
function is_valid(rule, book)
但是,通过针对每个规则列表运行每本书,我得出了以下与每个规则匹配的书籍列表:
rule_id | book_id |
---|---|
1 | 1 |
1 | 4 |
1 | 6 |
2 | 2 |
2 | 5 |
3 | 4 |
3 | 5 |
3 | 6 |
现在通过手动查看匹配规则和书籍的结果列表,我可以看出其中一种可行的组合是:
rule_id | book_id |
---|---|
1 | 1 |
2 | 2 |
3 | 4 |
因此,阅读了这 6 本书的用户将有资格加入读书俱乐部,因为他们已经阅读了 3 本书,以满足 3 条规则中的每一个。
我希望在这里找到的是具有数据分析专业知识的人,可以帮助我指明算法的方向,该算法可以帮助我以编程方式解决这个问题,并允许我用更多的规则和书籍来扩展这个问题数以万计的潜在。
任何指导将不胜感激。
解决方案
推荐阅读
- javascript - 如何通过数组映射生成基于api响应的动态表单?
- javascript - 按键删除数组中的对象
- powershell - 脚本没有获得多行输入
- apache-kafka - Kafka Connect:主题显示的事件数量是预期的 3 倍
- html - 在 Wordpress 中将所有 H5 转换为 H3?
- reactjs - 将 CSS 模块注入到每个组件的样式元素中(用于阴影根的可移植性)
- php - 尝试访问 cpanel 中的 wordpress url 时,cron 作业不起作用
- asp.net - Web 服务返回有限的记录数
- c++ - 需要帮助重载多项式类运算符 C++
- python-3.x - (Selenium WebDriver+ Python3)如何验证链接指向图像或至少返回它的文件扩展名?