]> ruin.nu Git - germs.git/blobdiff - src/genesorter.cpp
minor things
[germs.git] / src / genesorter.cpp
index 40e62e5b8bab62ae58e55fdc85f0c2f7a486380e..8643702250f82ac6b90bbfd08f6b65aaf0e85ee2 100644 (file)
 
 #include "genealgorithms.h"
 
+#include <queue>
 using namespace std;
 
 GeneSorter::ActionList GeneSorter::sort(const GeneOrder& go){
-       return ActionList();
+       ActionList al;
+       GeneOrder temp(go);
+       while(countCycles(temp) != temp.size() - 1){
+               ActionList safe = safeActions(go);
+               if (safe.size() > 0){
+                       safe[0](temp);
+                       al.push_back(safe[0]);
+               }else
+                       return ActionList(); //TODO: Need to handle other cases here.
+       }
+       return al;
 }
 
 GeneSorter::ActionList GeneSorter::safeActions(const GeneOrder& go){
        if (countCycles(go) == go.size() - 1)
                return ActionList();
        ActionList al;
-       al.push_back(SortAction(new ReverseAction(2,3)));
+       //al.push_back(SortAction(new ReverseAction(2,3)));
        return al;
 }