3
我有一個將(int * int list) list
作爲布爾矩陣的函數。我測試了我的反例,它給了我一個正確的答案。像下面的代碼。在OCaml中將一對int列表轉換爲布爾矩陣
let to_matrix l =
let n = List.length l in
let m = Array.make_matrix (n + 1) (n + 1) false in
List.iter (fun (i, j) ->
List.iter (fun t ->
m.(i).(t) <- true) j) l;
m;;
let ex = to_matrix [(0, [1; 0]); (1, [0]); (2, [1])];;
它給了我一個矩陣:
true true false false
true false false false
false true false false
false false false false
我就來測試一下我的真實數據,這是一個的XSD列表,像下面的數據腳本。例如:
[Elt ("name", Some (SimpleType "string"), 1, Bound 1);
Group ("label",
Some
(Choice
[Elt ("numberLabel",
Some
(Sequence
[Elt ("number", Some (SimpleType "nonNegativeInteger"), 0,
Unbounded)]),
1, Bound 1);
Elt ("symbolLabel",
Some (Sequence [GroupRef ("name", 0, Unbounded)]), 1, Bound 1)]),
1, Bound 1)]
編輯:
感謝托馬斯的答案。
我錯過了關於從遍歷這些樹返回的類型的解釋。
遍歷它看起來像該列表後的類型:
[( 「姓名」; 「字符串」]); (「label」; [「nonNegativeInteger」;「name」])...]
從這個xsds列表我想要表示一個布爾矩陣來顯示它們之間的依賴關係,例如:類型名稱取決於類型串;鍵入 標籤取決於類型nonNegativeInteger和名稱。
感謝您的回答。有什麼辦法,我可以把我的xsd列表沒有拆分我的xsd列表到(int * int列表)列表到matrx?是否有可能分裂我的xsd列表?因爲在我用我的數據測試時,結果總是像[(0;(0,1);(1;(0; 1))]這樣的位置,我不知道如何才能獲得正確的位置並返回它們之間的正確連接,例如:「label」與「name」具有連接,其中標籤具有位置1,並且名稱在列表中具有名稱(0)的位置,不在一個列表我想要的是我可以顯示它們之間的關係依賴 – Quyen 2011-12-23 04:16:53
'映射'包含你想要的關聯 – Thomas 2011-12-23 11:44:42
非常感謝你,現在我明白了爲什麼我卡住了:) – Quyen 2011-12-30 04:39:03