Показать сообщение отдельно
  #7 (permalink)  
Старый 13.11.2017, 14:10
Интересующийся
Отправить личное сообщение для Evelate Посмотреть профиль Найти все сообщения от Evelate
 
Регистрация: 10.03.2017
Сообщений: 12

Пожалуй не так написал, что мне нужно)

"Нужно найти <b>все</b> возможные комбинации и сохранить их в массив"
Например 2 столбца. Каждый столбец имеет переменную с данными "1"
a = 1; b = 1; c = 1;

происходит парсинг всех возможных комбинаций, все они должны сохранится в массив для дальнейшего сравнения)

комбо 1: a - arr[0] = [a]
комбо 2: b - arr[1] = [b]
комбо 3: c - arr[2] = [c]
комбо 4: a b - arr[3] = [a, b]
комбо 5: a c - arr[4] = [a, c]
комбо 6: b c - arr[5] = [b, c]
комбо 7: a b c - arr[6] = [a, b, c]





Из экселя я беру данные из определенных столбцов - сохраняю в переменные и сравниваю их с массивом из шаг №1

Например:
Входные данные также будут 1 или 0.


строка №1 из экселя: var1 = 1, var2 = 0, var3 = 1;
строка №2 из экселя: var1 = 0, var2 = 0, var3 = 1;


Дальше пока что смутно представляю реализацию...
как-то надо сопоставить "var1" с "b" и "var2" с "a" и "var3" c "c"
Далее,

Первый проход:
если "а" есть в массиве в текущем прохождении цикла, начать сравнивать её только с var2 каждой строки
если "а" и "b" есть в массиве в текущем прохождении цикла, начать сравнивать её только с var2 и c var1 каждой строки

выглядеть примерно должно так:

excel парсер с циклом "i" - массив комбинаций с циклом "j"
строка 1: var1 = 1, var2 = 0, var3 = 1;

a - if (var2 === a) { counter[j][переменная1]++
} else if var2 !== a { counter[j][переменная2]++ }
b-
c-
a b - if ((var2 === a) && (var1 === b)) { counter[j][переменная1]++
} else if ((var2 !== a) || (var1 !== b)) { counter[j][переменная2]++ }
a c-
b c-
a b c-

строка 2: var1, var2, var3

a-
b-
c-
a b-
a c-
b c-
a b c-
...




Потом я буду смотреть лучший результат между всеми переменными в counter[] и выберу несколько лучших комбинаций для использования в своих целях)


загвоздка в шаге 1 - вообще не представляю, как сделать, да и потом шаг два сопоставление не имею представления, как сделать)

Может у вас будет более простое решение?
Ответить с цитированием