我有一个包含三个对象的 Python:一个list
(例如:标题)和另一个(例如:名称)。tuples
string
date
string
例子:
scientific_works = [
('SW 1', datetime.date(2000, 10, 15), 'auth 1'),
('SW 2', datetime.date(2000, 11, 3), 'auth 1'),
('SW 3', datetime.date(2000, 11, 4), 'auth 1'),
('SW 4', datetime.date(2000, 12, 1), 'auth 1'),
]
然后我有一个模式:
从date
直到date
,(至少)每天/每周/每月/每年的int
项目list
int
例子:
from datetime.date(2000, 11, 1)
until datetime.date(2000, 11, 30)
1 item per day
我希望算法做什么:
- 给定该列表和该模式,过滤后的项目是否符合规则?
在示例的情况下,此模式将匹配 2 个项目,它们都与此处的规则匹配:1 item complete per day
,但是,由于没有an item
每天块,算法将返回false
。
另一个例子:
- 每个 Int_2(天/周/月)是否有(至少)Int_1 数量的项目(作品)?
- 每天 1 项工作意味着在给定的日期范围内每 1 天块至少有 1 个项目。每周 2 件作品意味着,日期范围内每周(或 7 天块)至少 2 件作品。
当然,我可以遍历列表并找出哪些项目匹配from
和until
模式。
但是,我真的很困惑将它们与其他规则进行匹配以查看它是正匹配还是负匹配。
我的问题:
- 如何构建算法,为其提供列表和规则模式(每天或每周或每月或每年 x 项),并查看它是否匹配?
如果作者解锁了奖励,我正在为一个应用程序开发一个小组件,其中给定了特定的数据(列表)和规则(模式)。
我已经完成了 udacity 的几个 Python 类,包括大多数算法,但真的找不到解决方法。
到目前为止,我想到了这个:
- 过滤具有给定日期范围的列表项。
- 计算范围内的范围块:从 d1 到 d2 的 1 天 = 5 天 - 从 d1 到 d2 的 1 周 = 3 周
int
在上面计算的范围内创建一个循环。- 在循环的每个步骤中将周、月、年转换为天。
- 将金额添加到开始日期并查看项目是否与日期范围匹配。
- 将金额添加到日期范围的下一个开始并重复。
但是,这不起作用,我认为将块转换为天根本不是有效的。
谢谢你。