8std::vector<std::unordered_map<std::string, bool>>
getTruthTableInputs(std::shared_ptr<Expression> lhs, std::shared_ptr<Expression> rhs)
10 std::set<std::string> variables = lhs->getVariables();
11 std::set<std::string> rhsVariables = rhs->getVariables();
12 variables.insert(rhsVariables.begin(), rhsVariables.end());
14 std::vector<std::unordered_map<std::string, bool>> inputs;
16 for (
int i = 0; i < std::pow(2, variables.size()); i++)
18 std::unordered_map<std::string, bool> input;
20 for (
auto variable : variables)
22 input[variable] = state % 2;
25 inputs.push_back(input);
31bool evaluateExpression(std::shared_ptr<Expression> expression, std::unordered_map<std::string, bool> inputs)
33 if (expression ==
nullptr)
36 std::string value = expression->getValue();
42 if (expression->isVar())
43 return inputs[expression->getValue()];
std::vector< std::unordered_map< std::string, bool > > getTruthTableInputs(std::shared_ptr< Expression > lhs, std::shared_ptr< Expression > rhs)
Generate the truth table inputs for the given expressions.
bool evaluateExpression(std::shared_ptr< Expression > expression, std::unordered_map< std::string, bool > inputs)
Evaluate the expression with the given inputs.