我需要以下问题的Pythonic循环开销的帮助:我正在写一个函数来计算像素流算法,它是2D Numpy数组上的经典动态编程算法。它要求: 1)访问数组中的所有元素至少一次这样的: for x in range(xsize):
for y in range(ysize):
updateDistance(x,y)
2)潜在的下列基于它看起来像一个元素的邻居的值的元素的一个路径
好了,所以在C#中我可以这样写: public class Memorizer<K,TRes>
{
private Dictionary<K,TRes> _mem;
private Func<K,TRes> _function
public Memorizer (Func<K,TRes> function)
{
_function = fun
为了简单起见,我将使用这个人为的例子类(的一点是,我们从方法得出一些昂贵的数据): class HasNumber a where
getNumber :: a -> Integer
getFactors :: a -> [Integer]
getFactors a = factor . getNumber
当然,我们可以做memoizing实现这个类如: dat
所以我工作的一些代码(去在实践考试对球拍的课程),我必须做到以下几点: 写一个函数cached-assoc是获得一个列表xs和n,并返回一个函数,该函数接受一个参数v并返回(assoc v xs)将返回的相同内容。 您应该使用最近结果的n元素缓存来使该函数可能比调用assoc更快。缓存应该是一个长度为n的向量,每当调用cached-assoc返回的函数时,调用cached-assoc和used-a