У меня есть функция, которая принимает (int * int list) list
в булевую матрицу. Я опробовал свой счетчик, и он дал мне правильный ответ. Как и код ниже.Преобразование пары int-списка в булевую матрицу в OCaml
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
я должен проверить это в моих реальных данных, это список xsds, как сценарий данных ниже. Например:
[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)]
EDIT:
Спасибо за ответ от Томаса.
Я пропустил объяснение о типе, который я вернул, пересекая эти деревья.
Тип после обхода это выглядит этот список:
[("название" [ "строка"]); («label»; [«nonNegativeInteger»; «name»]) ...]
Из этого списка xsds я хотел бы представить булевую матрицу, чтобы показать зависимость между ними, например: имя типа зависит от типа строка; type этикетка зависит от типа nonNegativeInteger и name.
Спасибо за ответ. Есть ли способ, которым я могу взять список xsd без разбиения списка xsd на список (int * int list) на matrx? Можно ли разбить список xsd? потому что в моем результате, когда я тестировал свои данные, он всегда занимал такую позицию, как [(0; (0, 1); (1; (0; 1))], я не знаю, как я могу получить правильную позицию и вернуть правильное соединение между ними, например: «label» имеет соединение с «именем», где метка имеет позицию 1, а имя имеет позицию имени (0) в списке, а не начало новой позиции в список, я хочу, чтобы я мог показать зависимость между ними. – Quyen
'mapping' содержит ассоциацию, которую вы хотите – Thomas
Большое спасибо, теперь я понял, почему я застрял :) – Quyen