#pragma once #include "clusters.hpp" template auto make_empty(Field field, Container const & c){ using namespace std; for(auto&& p : c){ field.get(p) = 0; } field.collapse(); return field; } template auto solve(Field const & field){ for(auto&& p : field.all_positions()){ if(!field.empty(p)) goto analyse; } return true; analyse: for(auto&& c : all_clusters(field)){ if(c.size() < 2) continue; auto new_field = make_empty(field, c); if(solve(new_field)) return true; } return false; }