static void Main(string[] args) { List <Literal> list = new List <Literal>(); list.Add(new Literal(true, 0)); list.Add(new Literal(false, 2)); list.Add(new Literal(true, 1)); DNF a = new DNF(3); DNF dnf = new DNF(3); dnf.Sort(); //демонстрация сорта dnf.Write(); // вывод Console.WriteLine(""); dnf.Insert(new List <Literal>(), 2); //вставка dnf.Erase(2); //удаление того же елемента Console.WriteLine(""); DNF q = dnf.MakeNewDNFFromIndex(1); //постороение новой днф в которой присутствуют только конъюнкции содержащие икс с какаимто индексом в этом случае икс1 q.Write(); // вывод Console.WriteLine(""); a.Sort(); //демонстрация сорта a.Write(); // вывод Console.WriteLine(""); Console.WriteLine(a.Calculate(list).ToString()); //вывод значения в какой -то вершине , так же будет работать для n вершин Console.WriteLine(""); DNF sum = DNF.Merge(a, dnf); //дизъюнкция sum.Write(); // вывод Console.WriteLine(""); }
public static DNF Merge(DNF d1, DNF d2) { DNF ans = new DNF(); for (int i = 0; i < d1.body.Count; i++) { ans.body.Add(d1.body[i]); } for (int i = 0; i < d2.body.Count; i++) { ans.body.Add(d2.body[i]); } return(ans); }//–Используя списки, построить дизъюнкцию двух ДНФ
public DNF MakeNewDNFFromIndex(int index) { DNF ans = new DNF(); for (int i = 0; i < body.Count; i++) { for (int j = 0; j < body[i].Count; j++) { if (body[i][j].Index == index) { ans.body.Add(body[i]); break; } } } if (ans.body.Count == 0) { return(null); } return(ans); }//–Построить новый список из конъюнкций, содержащих переменную x (переменная определяется в интерактивном режиме).