我正在尝试为J中的生命游戏功能重现APL代码.在搜索"APL中的生命游戏"之后,可以找到解释此代码的YouTube视频.目前我有一个矩阵R,它是:
0 0 0 0 0 0 0
0 0 0 1 1 0 0
0 0 1 1 0 0 0
0 0 0 1 0 0 0
0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我写了J代码,它生成了邻接列表(相邻方块中的活细胞数),如下所示:
+/ ((#:i.4),-(#:1+i.2),(1 _1),.(_1 1)) |. R
Run Code Online (Sandbox Code Playgroud)
并产生:
0 0 1 2 2 1 0
0 1 3 4 3 1 0
0 1 4 5 3 0 0
0 1 3 2 1 0 0
0 0 1 1 0 0 …Run Code Online (Sandbox Code Playgroud) 我正在测试Julia中的并行性,看看我的机器上是否有加速(我正在选择一种语言来实现新的算法).我不想花费大量时间编写一个巨大的例子,所以我在发布版Julia 0.4.5(Mac OS X和双核)上进行了以下测试:
$ julia -p2
julia> @everywhere f(x) = x^2 + 10
julia> @time map(f, 1:10000000)
julia> @time pmap(f, 1:10000000)
Run Code Online (Sandbox Code Playgroud)
pmap显着慢于map(> 20x)并且分配超过内存的10倍.我究竟做错了什么?
谢谢.
我想得到一个编写内存有效的haskell代码的句柄.我碰到的一件事是,没有简单的方法来制作python样式列表生成器/迭代器(我能找到).
小例子:
在不使用闭合形式公式的情况下查找1到100000000之间的整数之和.
Python可以通过最少的内存使用来快速完成sum(xrange(100000000).在Haskell中,模拟将是sum [1..100000000].然而,这耗尽了大量内存.我认为使用foldl或者foldr会很好,但即使使用大量内存并且比python慢.有什么建议?