python - 如何使用python找到文件中连续数字的路径?
问题描述
我有一个包含 4000,000 条数据的文件。我开始用python编程。我想找到一条 7 比 1 到达的路径。但我有一些条件:
1.- 路径必须是下降的,例如:7, 6, 5....1(希望是连续的),但可以是 7,6,3,1。主要目标是下降(第二列)。想象一下,线之间的底物必须= 1才能识别它们
2.- 路径不能上升。例如:如果我在 7、6、5..然后 6 不正确。下一个数字 5 必须是数字 4,或其他更低但没有更高的数字。我想象线之间的基板必须是-1才能识别它们
3.- 可以重复数字。例如,如果我在 7 中,我可以在 7 中有一些行在通过 6 之前就可以了。请记住,主要目标不是上升,而是下降。我想结果将是常数 0 或 1 。
4.- 如果其中一个条件为假,则:a) 重新开始,但在第一行中没有 7。我的意思是,如果有 7(文件中的第二个 7),则从下一行开始不是从 7 开始的路径,然后选择 6 行,依此类推,直到找到到达 1 的路径。 b) 或从进程中断的最后一行开始。(我不知道这个选项是否有效)
在简历中,我想找到从 7 到 1 的有效路径,以下降的方式,而不是上升。
输入文件是:
1 6
2 6
3 6
4 7
5 7
6 3
7 3
8 5
9 7
10 6
……等等等等。
输出文件:
45 7
46 7
47 7
48 7
49 6
50 6
51 5
52 5
53 4
54 3
55 2
56 1
或者
50 7
51 6
52 5
53 4
54 3
55 2
56 1
那么,您能指导我如何执行此过程吗?
非常感谢。
解决方案
我会创建一个有限状态机,每个数字都有一个状态(7 个状态,1 到 7)。在每一行:
- 如果当前行的数字是 7:创建机器的新实例(它将是一个类)并将其推送到“活动”自动机列表。
- 调用
.add_number(parsed_number)
所有机器。此函数记住数字并返回三个可能结果之一:- 0 - 我不接受这个数字,把我扔掉(你必须对所有状态转换进行建模,这基本上是从较大数字到较小数字的任何转换)。
- 1 - 我已接受号码,什么也不做。
- 2 - 我已经接受了数字并且数字是1:打印我积累的东西并把我扔掉。
推荐阅读
- postgresql - 调用返回无效函数时在“执行”处或附近出现语法错误
- php - Laravel(windows)存储路径
- google-apps-script - Webhook 到 Google 表格 - 想要替换而不是附加行
- html - 悬停时使用容器拉伸图像
- python - 在生成器上循环 concurrent.futures.as_completed 是否会在每次迭代时释放结果内存?
- laravel - Laravel 图片,Javascript 和 Css 404 错误
- html - 如何在 aem 的站点中添加额外的 li 元素到“创建”按钮
- python - Python 配置选项 - 设置 Python 二进制文件的相对路径以查找共享对象/共享库
- coldfusion - Cfloop 只返回列表的第一个和最后一个值的值
- json - 如何使用 JSON 从 Github API 获取最新版本