F # - Матрица повторной обработки - PullRequest
1 голос
/ 26 октября 2011

У меня есть следующие критерии для профиля пользователя:

Критерии 1:

1 = Мужчина

2 = Женщина

3 = Неизвестен

Критерии 2:

1 = Да

2 = Нет

Критерии 3:

1 = Да

2 = Нет

3 = Неизвестно

У меня есть следующая матрица из SQL: Матрица "User1" [[3.; 1.; 2.]] (Пол Неизвестен / Да / Нет)

Я хотел бы найти код для получения следующей повторной обработки, которая может работать, если добавляются новые критерии (еще один столбец)для матрицы «Пользователь1» из SQL):

Результат: [[0.; 0.; 1.; 1.; 0.; 0.; 1.; 0.]]

[[Мужчина; Женщина; Неизвестно; Да по Критериям2; Нет по Критериям 2; Да по Критериям3; Нет по Критериям3; Неизвестно по Критериям3]]

1 Ответ

1 голос
/ 26 октября 2011

Вам нравится это?

//> conv [[3.;1.;2.]] ;;
//val it : float list list = [[0.0; 0.0; 1.0; 1.0; 0.0; 0.0; 1.0; 0.0]]
let conv data =
    let [[a:float;b;c]] = data
    let C1 = Array.create 3 0.
    let C2 = Array.create 2 0.
    let C3 = Array.create 3 0.
    C1.[int a - 1] <- 1.0
    C2.[int b - 1] <- 1.0
    C3.[int c - 1] <- 1.0
    [ Array.concat [| C1; C2; C3 |] |> Array.toList]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...