对于家庭作业,我必须(除其他事项外)在奥兹创建一个棋盘。
我对语言不太熟悉,但这就是我想要的方式:
declare
fun {MakeTile Col Row}
if Col==1 then
if {And (Row=<10) (Row>=2)} then N in
N = {MakeTile 1 Row+1}|{MakeTile 1 Row-1}|{MakeTile 2 Row}|{MakeTile 2 Row-1}
tile(column:Col row:Row player:0 neighbours:N)
else
if Row==11 then N in
N = {MakeTile 1 Row-1}|{MakeTile 2 Row-1}|{MakeTile 2 Row}
tile(column:Col row:Row player:0 neighbours:N)
else N in % Row==1
N = {MakeTile 1 Row+1}|{MakeTile 2 Row}
tile(column:Col row:Row player:0 neighbours:N)
end
end
else
tile(column:Col row:Row player:0 neighbours:nil)
% TODO: Handle other edge of the board
end
end
{Browse {MakeTile 'A' 1}}
程序一直在运行。
我们必须以声明式编程。我不熟悉这些语言,递归方法是创建这样一块板的好方法吗?
答案 0 :(得分:0)
声明性方法可能是正确的方法。我测试了你的代码,并为你写的内容工作,它只是按预期打印tile(column:'A' neighbours:nil player:0 row:1)
。它没有继续运行,你的问题是什么?