/// <summary> /// Создание таблицы истинности булевой функции из /// </summary> /// <param name="func">булева функция</param> /// <param name="names">массив переменных</param> /// <returns>таблица истинности</returns> private bool[,] STable(string func, string[] names) { int n = names.Length; int m = MyMath.Pow2(n); bool[,] iArray = new bool[n + 1, m]; for (int i = 0; i < m; i++) { string tech = func; // Хаки дотнета наше все. хотя надо выпилить var t = new BitArray(decimal.GetBits(i)).Cast <bool>().ToArray(); var bo = t.Take(n).ToArray(); for (int k = 0; k < n; k++) { iArray[k, i] = bo[n - 1 - k]; } for (int j = 0; j < n; j++) { tech = tech.Replace(names[j], MyConvert.BoolToInt(iArray[j, i]).ToString()); } tech = Min(tech); switch (tech) { case "1": iArray[n, i] = true; break; case "0": iArray[n, i] = false; break; } } return(iArray); }