Skip to content

Commit 350044f

Browse files
committed
Implement new evaluation method
1 parent e8cc214 commit 350044f

File tree

2 files changed

+12
-69
lines changed

2 files changed

+12
-69
lines changed

BooleanExpressionParser/Evaluator.cs

Lines changed: 0 additions & 64 deletions
This file was deleted.

BooleanExpressionParser/Program.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,18 @@ static void Main(params string[] args)
2626

2727
var ast = parser.GrowAst(prefixTokens);
2828

29-
var evaluator = new Evaluator(ast);
30-
var table = evaluator.EvaluateAll();
31-
32-
var tableString = Formatter.FormatTruthTable(ast, table, label: Formatter.FormatTokens(infixTokens));
33-
tables.Add(tableString);
29+
int numCombinations = (int)Math.Pow(2, ast.Variables.Count);
30+
var table = new List<bool[]>();
31+
for (int i = 0; i < numCombinations; i++)
32+
{
33+
var binary = Convert.ToString(i, 2).PadLeft(ast.Variables.Count, '0');
34+
var values = binary.Select(c => c == '1').ToArray();
35+
36+
var result = ast.Root.Evaluate(ast.Variables.Zip(values, (name, value) => (name, value)).ToDictionary(x => x.name, x => x.value));
37+
table.Add(values.Append(result).ToArray());
38+
}
39+
40+
tables.Add(Formatter.FormatTruthTable(ast, table, label: expression));
3441
}
3542

3643
if (tables.Count > 1)

0 commit comments

Comments
 (0)