宿題のために、(とりわけ) 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}}
プログラムはそのまま実行され続けます。
宣言型のスタイルでプログラミングする必要があります。私はこれらの種類の言語に慣れていませんが、再帰的なアプローチはそのようなボードを作成する良い方法ですか?