public TruthTable GenerateTruthTable() { TruthTable truthTable = new TruthTable(this); truthTable.Calculate(); return(truthTable); }
/// <summary> /// Generate the DNF in prefix form, from the simplified truth table /// </summary> /// <param name="truthTable">The truth table</param> /// <returns>DNF in prefix form</returns> public string ConvertToDNF(TruthTable truthTable) { string[] header = truthTable.GenerateHeaders(); List <string> rows = truthTable.GenerateSimplifiedRows(); // filter out the 0 rows rows = rows.Where(row => row.Last() == '1').ToList(); // Tautology if (truthTable.Result.Contains("0") == false) { return("|(a, ~(a))"); } // Contradiction if (truthTable.Result.Contains("1") == false) { return("&(a, ~(a))"); } string expression = ""; // Convert each row to a DNF clause for (int i = 0; i < rows.Count; i++) { string clause = ConvertToDNFClause(header, rows[i]); // only one clause if (rows.Count == 1) { return(string.Format("{0}", clause)); } if (i != rows.Count - 1) { expression = expression + "|(" + clause + ","; } else // last row { expression += clause; } } for (int i = 0; i < rows.Count - 1; i++) { expression += ")"; } return(expression); }