如何在python文件中找到连续数字的路径?

问题描述 投票:0回答:1

我有一个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个),如果有的话不是从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

那么,你能指导我如何做这个过程吗?

非常感谢。

python algorithm path numbers conditional
1个回答
0
投票

我会为每个数字创建一个finite-state machine状态(7个状态,1到7)。在每一行:

  • 如果当前行上的数字是7:创建一个新的机器实例(它将是一个类)并将其推送到“活动”自动机列表。
  • 在所有机器上调用.add_number(parsed_number)。此函数记住数字并返回三个可能结果之一: 0 - 我不接受这个数字,抛弃我(你必须建模所有状态转换,基本上是从大到小的任何过渡)。 1 - 我接受了号码,什么都不做。 2 - 我接受了号码,号码是1:打印我积累的东西然后扔掉了。
© www.soinside.com 2019 - 2024. All rights reserved.