Beispiel #1
0
        /// <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);
        }