我试图找到一个编写高级函数的算法 - 不必停止 - 在Python(或伪代码)中,对于给定的函数列表[f1,... 。,fn]和给定的输入列表[x1,...,xn]只打印一次fi(xj)(意思是所有的函数和输入对)。
当然,实施这一点的天真建议是:
for f in lst1:
for x in lst2:
f(x)
但问题是,某些功能可能会在某些输入上永远循环。
我被允许使用一个步进器(它有一个step()方法,每次调用该函数的一个后续计算步骤)
我只需要一个关于如何操作的想法或算法。
答案 0 :(得分:7)
一般的概念是鸠尾榫。您可以交替使用各种替代方法,而不是尝试运行每个替代方案。例如,给定三个计算c1,c2,c3:
如果计算停止,则此过程在有限时间内达到其暂停状态,而不管有多少其他计算没有停止。以这种方式运行k计算仅将每个计算减慢因子k。由于这可能是家庭作业,我不会详细说明如何将其应用于您的具体问题。
当然,如果任何计算都没有停止,这不会停止。这是不可避免的(参见暂停问题)而不是问题,因为在你进入徒劳无限循环之前,你将完成那些做停止(在你的情况下:输出他们的结果)。< / p>