}
+double Whirl::score(const SortAction& sa, const GeneOrder& go){
+ const ReverseAction* ra = dynamic_cast<const ReverseAction*>(&sa.impl());
+
+ if (ra){
+ return 1;
+ }
+ return -1;
+}
+const char* Whirl::name(){
+ return "Whirl";
+}
double X::score(const SortAction& sa, const GeneOrder& go){
const ReverseAction* ra = dynamic_cast<const ReverseAction*>(&sa.impl());
}
double Zipper::score(const SortAction& sa, const GeneOrder& go){
- return 1;
+ const ReverseAction* ra = dynamic_cast<const ReverseAction*>(&sa.impl());
+
+ if (ra){
+ return 1.0/(((ra->j()-ra->i())/static_cast<double>(go.size()))+1.0);
+ }
+ return -1;
}
const char* Zipper::name(){
return "Zipper";