X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=src%2Fmodels.cpp;h=0511dd4726b231e38b3521981d01ba3ccf793831;hb=a45ea752862a45a0868940280aeb837af270cf22;hp=9e6c2c36e9750245738d3604ff3e0aaf2a5e5196;hpb=6b05a1ca565e894a3d754d30d7daae84ed48d386;p=germs.git diff --git a/src/models.cpp b/src/models.cpp index 9e6c2c3..0511dd4 100644 --- a/src/models.cpp +++ b/src/models.cpp @@ -36,6 +36,17 @@ const char* ModelImpl::name(){ } +double Whirl::score(const SortAction& sa, const GeneOrder& go){ + const ReverseAction* ra = dynamic_cast(&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(&sa.impl()); @@ -53,7 +64,12 @@ const char* X::name(){ } double Zipper::score(const SortAction& sa, const GeneOrder& go){ - return 1; + const ReverseAction* ra = dynamic_cast(&sa.impl()); + + if (ra){ + return 1.0/(((ra->j()-ra->i())/static_cast(go.size()))+1.0); + } + return -1; } const char* Zipper::name(){ return "Zipper";