首页 > 解决方案 > 查找互斥数据以满足多个标准

问题描述

我试图找出一种算法,它可以让我以编程方式解决以下问题。

有一个读书俱乐部有一套允许加入的规则。您必须阅读 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 条规则中的每一个。

我希望在这里找到的是具有数据分析专业知识的人,可以帮助我指明算法的方向,该算法可以帮助我以编程方式解决这个问题,并允许我用更多的规则和书籍来扩展这个问题数以万计的潜在。

任何指导将不胜感激。

标签: algorithm

解决方案


推荐阅读