对于家庭作业,我必须(除其他外)在 Oz 中创建一个棋盘。
我对这种语言相当陌生,但我想这样做:
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}}
该程序只是继续运行。
我们必须以声明式的方式进行编程。我不习惯这些语言,递归方法是创建这种板的好方法吗?