X-Git-Url: https://ruin.nu/git/%3CTMPL_VAR%20NAME=PAGE%3E?a=blobdiff_plain;f=src%2Fgenealgorithms.cpp;h=04875daca3031c0803ed527b9a36742d8965289a;hb=172455c7649ea714eb13f9ac1fd96652f0617ca0;hp=d9d86a3dd8fcb651ce497180b062fa3ddc562612;hpb=6724d50f2d36dccd383d95d36f7fe328b2692bc0;p=germs.git diff --git a/src/genealgorithms.cpp b/src/genealgorithms.cpp index d9d86a3..04875da 100644 --- a/src/genealgorithms.cpp +++ b/src/genealgorithms.cpp @@ -67,6 +67,7 @@ struct FindP{ std::vector findIntervalsAtPoints(const vector& intervals){ vector points; + points.push_back(Interval(intervals.size(),intervals.size())); //Dummy interval to match point and index for (size_t p = 1; p <= intervals.size(); ++p){ size_t f = 0; size_t s = 0; @@ -106,13 +107,13 @@ int countCycles(const GeneOrder& go){ for (size_t p = 1; p < go.size(); ++p){ if (marked.find(p) != marked.end()) continue; - Interval i = intervals[points[p-1].first]; + Interval i = intervals[points[p].first]; while (marked.find(p) == marked.end()){ marked.insert(p); - if (i == intervals[points[p-1].first]) - i = intervals[points[p-1].second]; + if (i == intervals[points[p].first]) + i = intervals[points[p].second]; else - i = intervals[points[p-1].first]; + i = intervals[points[p].first]; if (p == i.first) p = i.second;