summaryrefslogtreecommitdiff
path: root/src/analysis_tools.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis_tools.cpp')
-rw-r--r--src/analysis_tools.cpp20
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];