1
Fork 0

Adds number of colors and a loop for checking more levels

This commit is contained in:
Joshua Moerman 2014-02-13 22:53:52 +01:00
parent 58b4a320df
commit 64952b9700
2 changed files with 14 additions and 8 deletions

View file

@ -158,8 +158,8 @@ public:
}; };
template <typename URNG> template <typename URNG>
auto random_dynamic_grid(int W, int H, URNG&& r){ auto random_dynamic_grid(int W, int H, int C, URNG&& r){
std::uniform_int_distribution<int> dis(1, 2); std::uniform_int_distribution<int> dis(1, C);
std::vector<int> v(W*H); std::vector<int> v(W*H);
std::generate_n(std::begin(v), W*H, [&]{ return dis(r); }); std::generate_n(std::begin(v), W*H, [&]{ return dis(r); });
return DynamicGrid(W, H, std::begin(v)); return DynamicGrid(W, H, std::begin(v));

View file

@ -15,13 +15,19 @@ int main(){
std::random_device rd; std::random_device rd;
std::mt19937 gen(rd()); std::mt19937 gen(rd());
std::cout << std::endl; int c = 0;
auto field = random_dynamic_grid(3, 3, gen); while(true){
std::cout << "puzzle " << ++c << std::endl;
auto field = random_dynamic_grid(5, 2, 3, gen);
field.print(std::cout); field.print(std::cout);
auto solution = solve(field); auto solution = solve(field);
for(auto&& t : solution.taps){ for(auto&& t : solution.taps){
std::cout << "(" << t.first << ", " << t.second << ")\n"; std::cout << "(" << t.first << ", " << t.second << ")\n";
}
if(!solution.taps.empty()){
break;
}
} }
} }