【发布时间】:2014-08-19 20:15:45
【问题描述】:
作为不熟悉 Python 的人,我正在尝试将这个 Python 翻译成 Lua。函数取自http://rosettacode.org/wiki/Sierpinski_triangle#Python
def sierpinski(n):
d = ["*"]
for i in xrange(n):
sp = " " * (2 ** i)
d = [sp+x+sp for x in d] + [x+" "+x for x in d]
return d
print "\n".join(sierpinski(4))
这是我到目前为止所拥有的,但它并没有提供所需的输出。我分析 Python 错了吗?我自己并不了解 Python,所以我假设是这种情况。
function each(array,operation)
-- Do an operation on each object in an array
local out = {}
for _,obj in pairs(array) do
print(obj)
table.insert(out,operation(obj))
end
return out
end
function join(...)
-- Join two tables
local out = {}
for _,arr in pairs({...}) do
for _,v in pairs(arr) do
table.insert(out,v)
end
end
return out
end
function sierpinski(n)
local triangle = {"*"}
for i = 1,n do
local sp = (" "):rep(2^n)
triangle = join(
each(triangle,(function(x)
return sp..x..sp
end)),
each(triangle,(function(x)
return x.." "..x
end))
)
end
return table.concat(triangle,"\n")
end
print(sierpinski(4))
【问题讨论】:
-
显示获得的输出和预期的输出。
-
打算把它放在罗塞塔石碑上?
-
如果我亲自使用它,我会把它放在 Rosetta Code 上,现在我不确定这是否取决于我。
-
根据这个网页的底部:“在cc by-sa 3.0下授权的用户贡献需要署名”详细信息在这里:creativecommons.org/licenses/by-sa/3.0基本上你可以使用它,只要你有类似的东西答案的链接...
-
哇,很高兴知道这一点。