diff options
Diffstat (limited to 'src/analysis_tools.cpp')
-rw-r--r-- | src/analysis_tools.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/analysis_tools.cpp b/src/analysis_tools.cpp index 2965915..8ad8235 100644 --- a/src/analysis_tools.cpp +++ b/src/analysis_tools.cpp @@ -30,10 +30,22 @@ std::pair<std::array<unsigned, 2>, std::set<unsigned>> find_minimal_crack(const } if (all_good) { - if (cycles[0].second.size() > cycles[1].second.size()) { - return cycles[1]; + if (n.two_sides) { + if (cycles[0].second.size() > cycles[1].second.size()) { + return cycles[1]; + } else { + return cycles[0]; + } } else { - return cycles[0]; + if (cycles[0].first[0] % 2 == 0) { + return cycles[0]; + } else { + return cycles[1]; + } + } + } else if (!n.two_sides) { + if (cycles[!not_good].first[0] % 2 == 0) { + return cycles[!not_good]; } } @@ -63,7 +75,7 @@ std::pair<std::array<unsigned, 2>, std::set<unsigned>> find_minimal_crack(const pos++; } - if (cycles[!not_good].second.size() > new_cycle.size()) { + if (cycles[!not_good].second.size() > new_cycle.size() || !n.two_sides) { return {{sum_sig_0, sum_sig_1}, new_cycle}; } else { return cycles[!not_good]; |