+
+double X::score(const SortAction& sa, const GeneOrder& go){
+ const ReverseAction* ra = dynamic_cast<const ReverseAction*>(&sa.impl());
+
+ if (ra){
+ int l1 = go.size()/2 - ra->i();
+ int l2 = ra->j() - go.size()/2;
+ double C = abs(l1 - l2)/static_cast<double>(go.size());
+ return 1/(C+1);
+ }
+ return -1;
+}
+const char* X::name(){