1
我想在OCaml中編寫一個函數,給定矩陣中包含條目「u」,「d」,「l」,「r」和「x」的座標「,返回true如果從該座標的'方向'結束於」x「,或者否則爲。在OCaml中找到一個矩陣中的x
我的策略是檢查,如果我之前訪問過的當前單元格(如果是的話,返回假),通過傳遞矩陣的bool的噸通過,更新當前單元格的真值。
我現在的嘗試是低於(ñ是我試圖瀏覽樣品基質):
let n = [| [|"u"; "d"; "l"; "l"; "r"|];
[|"r"; "d"; "r"; "l"; "l"|];
[|"u"; "r"; "d"; "d"; "l"|];
[|"u"; "l"; "l"; "d"; "u"|];
[|"r"; "x"; "l"; "l"; "d"|];
[|"r"; "d"; "u"; "d"; "l"|]|];;
let xMax = (Array.length n);;
let yMax = (Array.length n.(0));;
let t = Array.make_matrix xMax yMax false;;
let rec f m x y t =
if x < 0 || y < 0 || x >= (Array.length m) || y >= (Array.length m.(0)) || t.(x).(y) = true
then false
else (
if m.(x).(y) = "x" then true
else (
t.(x).(y) <- true
if m.(x).(y) = "l" then f m x (y-1) t
else if m.(x).(y) = "r" then f m x (y+1) t
else if m.(x).(y) = "u" then f m (x-1) y t
else if m.(x).(y) = "d" then f m (x+1) y t
else false
)
);;
任何人都可以用如何解決這個幫助嗎?這是行
t.(x).(y) <- true
不工作(註釋它使功能運行,但不更新矩陣t)。
在此先感謝!
Add';' '真'後,或不會編譯。 – avysk
您應該始終指定遇到的失敗類型:編譯時(語法錯誤,鍵入錯誤)或運行時錯誤。最佳做法是複製系統的確切錯誤信息以便使用,其他人更容易幫助您 – ghilesZ
謝謝。下次我會記住這一點 – Ronnie268