mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Enable magic squares 4
This commit is contained in:
parent
b6e6cd4ebb
commit
29be0d23f6
@ -79,6 +79,8 @@ optional<CDCL::Model> CDCL::solve()
|
|||||||
{
|
{
|
||||||
if (auto variable = nextDecisionVariable())
|
if (auto variable = nextDecisionVariable())
|
||||||
{
|
{
|
||||||
|
cout << "Level " << currentDecisionLevel() << " - ";
|
||||||
|
cout << ((m_assignments.size() * 100) / m_variables.size()) << "% of variables assigned." << endl;
|
||||||
m_decisionPoints.emplace_back(m_assignmentTrail.size());
|
m_decisionPoints.emplace_back(m_assignmentTrail.size());
|
||||||
// cout << "Deciding on " << m_variables.at(*variable) << " @" << currentDecisionLevel() << endl;
|
// cout << "Deciding on " << m_variables.at(*variable) << " @" << currentDecisionLevel() << endl;
|
||||||
enqueue(Literal{false, *variable}, nullptr);
|
enqueue(Literal{false, *variable}, nullptr);
|
||||||
|
@ -279,30 +279,31 @@ BOOST_AUTO_TEST_CASE(magic_square_3)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// This still takes too long.
|
BOOST_AUTO_TEST_CASE(magic_square_4)
|
||||||
//
|
{
|
||||||
//BOOST_AUTO_TEST_CASE(magic_square_4)
|
vector<Expression> vars;
|
||||||
//{
|
for (size_t i = 0; i < 16; i++)
|
||||||
// vector<Expression> vars;
|
vars.push_back(variable(string{static_cast<char>('a' + i)}));
|
||||||
// for (size_t i = 0; i < 16; i++)
|
Expression sum = variable("sum");
|
||||||
// vars.push_back(variable(string{static_cast<char>('a' + i)}));
|
for (Expression const& var: vars)
|
||||||
// for (Expression const& var: vars)
|
solver.addAssertion(1 <= var && var <= 16);
|
||||||
// solver.addAssertion(1 <= var && var <= 16);
|
for (size_t i = 0; i < 16; i++)
|
||||||
// for (size_t i = 0; i < 16; i++)
|
for (size_t j = i + 1; j < 16; j++)
|
||||||
// for (size_t j = i + 1; j < 16; j++)
|
solver.addAssertion(vars[i] != vars[j]);
|
||||||
// solver.addAssertion(vars[i] != vars[j]);
|
for (size_t i = 0; i < 4; i++)
|
||||||
// for (size_t i = 0; i < 4; i++)
|
solver.addAssertion(vars[i] + vars[i + 4] + vars[i + 8] + vars[i + 12] == sum);
|
||||||
// solver.addAssertion(vars[i] + vars[i + 4] + vars[i + 8] + vars[i + 12] == 34);
|
for (size_t i = 0; i < 16; i += 4)
|
||||||
// for (size_t i = 0; i < 16; i += 4)
|
solver.addAssertion(vars[i] + vars[i + 1] + vars[i + 2] + vars[i + 3] == sum);
|
||||||
// solver.addAssertion(vars[i] + vars[i + 1] + vars[i + 2] + vars[i + 3] == 34);
|
solver.addAssertion(vars[0] + vars[5] + vars[10] + vars[15] == sum);
|
||||||
// solver.addAssertion(vars[0] + vars[5] + vars[10] + vars[15] == 34);
|
solver.addAssertion(vars[3] + vars[6] + vars[9] + vars[12] == sum);
|
||||||
// solver.addAssertion(vars[3] + vars[6] + vars[9] + vars[12] == 34);
|
feasible({
|
||||||
// feasible({
|
{vars[0], "9"}, {vars[1], "5"}, {vars[2], "1"},
|
||||||
// {vars[0], "9"}, {vars[1], "5"}, {vars[2], "1"},
|
{vars[3], "4"}, {vars[4], "3"}, {vars[5], "8"},
|
||||||
// {vars[3], "4"}, {vars[4], "3"}, {vars[5], "8"},
|
{vars[6], "2"}, {vars[7], "7"}, {vars[8], "6"}
|
||||||
// {vars[6], "2"}, {vars[7], "7"}, {vars[8], "6"}
|
});
|
||||||
// });
|
}
|
||||||
//}
|
|
||||||
|
// Magic squares 5 takes almost 2 minutes.
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(boolean_complex_2)
|
BOOST_AUTO_TEST_CASE(boolean_complex_2)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user