diff --git a/cell.h b/cell.h index 808e5a163e2d37ab48c21f868cd569eca5a80b8a..3ca68e39781f4b8974d24627722a3b3a6c528bf2 100644 --- a/cell.h +++ b/cell.h @@ -26,7 +26,6 @@ public slots: void addOption(int x); void removeOption(int x); void collapse(int x); -private slots: void un(void); }; diff --git a/window.cpp b/window.cpp index b055b889300a12cabc7261ba8a7993cefc2fc51b..825783a5f60cd4fe4793139d147c0f04f4bcc9c5 100644 --- a/window.cpp +++ b/window.cpp @@ -72,6 +72,7 @@ Window::Window(QWidget *parent) void Window::solveButtonClicked() { // std::array<Cell,81> start = m_cell; + std::list<Cell*> hist; srand(time(NULL)); while (1) { @@ -101,12 +102,18 @@ void Window::solveButtonClicked() return; } else if(minEtropy ==0){ - qInfo("dead End reached"); + while (hist.size()>1) + { + hist.back()->un(); + hist.pop_back(); + } return; + //solveButtonClicked(); } int choiceCell = rand() % b.size(); //choose a random cell int choiceNr = rand() % b[choiceCell]->index.size(); //choose a random number; b[choiceCell]->collapse(b[choiceCell]->index[choiceNr]); //collapse that random cell with chosen number; + hist.push_back(b[choiceCell]); repaint(); //draw cells again QThread::msleep(m_delay); }