diff --git a/processor.cxx b/processor.cxx index 5f81d596046f91a597ea4acf08576d71fddfb0c2..5c9770eedff5a36b214355f2a7faf1f6c01f6e1a 100644 --- a/processor.cxx +++ b/processor.cxx @@ -19,6 +19,12 @@ void Processor::process(std::list<Element> list) if(list.size() == 0) { rMatrix_.print(); + std::cout << "Elemek: " << std::endl; + for(const auto& elem : result) + { + elem.print(); + } + std::cout << "----------------------" << std::endl; ready_ = true; return; } @@ -29,20 +35,21 @@ void Processor::process(std::list<Element> list) auto it = list.begin(); while( hasMoreState || it!= list.end() ) { - Position pos{0,0}; + Position pos; success = rMatrix_.putFirst(*it, pos); if(success) { // rMatrix_.print(); + result.push_back(*it); + // copy everything except current std::list<Element> copy; std::copy(list.begin(), it, std::back_inserter(copy)); copy.insert(copy.end(), std::next(it), list.end()); process(std::move(copy)); - if(ready_) - it->print(); rMatrix_.free(*it, pos); + result.pop_back(); } hasMoreState = it->nextState(); diff --git a/processor.hxx b/processor.hxx index 8005531f655c0004bb5e1a3aa671754c39b54496..8901bf17e598001d3c0bdddbe762cbb437034c64 100644 --- a/processor.hxx +++ b/processor.hxx @@ -12,6 +12,7 @@ class Processor private: bool ready_ = false; Matrix& rMatrix_; + std::list<Element> result; public: Processor(Matrix& matrix); diff --git a/utils.hxx b/utils.hxx index 28e2620126138c844097d506397a65014e9d94e9..f6fe8a63889d7b45b3bd63f00a6799c0932db729 100644 --- a/utils.hxx +++ b/utils.hxx @@ -18,6 +18,7 @@ enum class Direction struct Position { std::size_t x, y; + Position() = default; Position(std::size_t x, std::size_t y) :x(x), y(y) {} };