如何使用python查找文件中连续数字的路径?

时间:2019-03-27 06:06:44

标签: python algorithm path numbers conditional

我有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中,则在传递6之前我可以在7中有一些行,这样就可以了。请记住,主要目标不是上升,而是下降。我想象结果将是恒定的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

那么,您能指导我如何执行此过程吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我将创建一个finite-state machine,其中每个数字都有一个状态(7个状态,从1到7)。在每一行:

  • 如果当前行上的数字为7:创建机器的新实例(它将是一个类)并将其推送到“有效”自动机列表中。
  • 在所有计算机上致电.add_number(parsed_number)。此函数记住数字并返回三个可能结果之一:
    • 0-我不接受数字,把我扔掉(您必须对所有状态转换建模,基本上是从大数到小数字的任何转换)。
    • 1-我接受了此号码,什么也不做。
    • 2-我接受了数字,数字是1:打印出我积累的东西并扔掉。