/// <summary> /// Add clauses to truth table and calculate their output. /// </summary> public void CalculateTELL() { string tempString = ""; List <string> uniqueValues = new List <string>(); for (int i = 0; i < _clauses.Length; i++) { if (_clauses[i].Contains("&") || _clauses[i].Contains("=>")) { foreach (char c in _clauses[i]) { if (c != '=') { tempString = tempString + c; } } uniqueValues.Add(tempString); _clauses[i] = tempString; tempString = ""; } } TruthSolver truthSolver = new TruthSolver(); string truthValue = ""; foreach (string s in uniqueValues) { _truthTable.Add(new List <char>()); _tableMap.Add(s, _truthTable.Count - 1); for (int i = 0; i < _truthTable[0].Count; i++) { foreach (char c in s) { if (!TruthTablePostFix.IsOperator(c)) { truthValue = truthValue + c; } else { truthValue = Convert.ToString(_truthTable[_tableMap.Find(Convert.ToString(truthValue))][i]); tempString = tempString + truthValue + c; truthValue = ""; } } tempString = tempString + Convert.ToString(_truthTable[_tableMap.Find(Convert.ToString(truthValue))][i]); _truthTable[_tableMap.Find(s)].Add(truthSolver.Calculate(tempString)); tempString = ""; truthValue = ""; } } }
public char Calculate(string input) { TruthTablePostFix TTPF = new TruthTablePostFix(input); return(TTPF.Solve()); }