tensort-0.2.0.1: src/Data/Tensort/Subalgorithms/Magicsort.hs
module Data.Tensort.Subalgorithms.Magicsort
( magicsort,
)
where
import Data.Tensort.Subalgorithms.Bogosort (bogosort)
import Data.Tensort.Subalgorithms.Permutationsort (permutationsort)
import Data.Tensort.Utils.Types (Sortable (..))
magicsort :: Sortable -> Sortable
magicsort xs = do
let result1 = permutationsort xs
let result2 = bogosort xs
if verifyResults result1 result2
then result1
else magicsort xs
verifyResults :: Sortable -> Sortable -> Bool
verifyResults (SortBit xs) (SortBit ys) = xs == ys
verifyResults (SortRec xs) (SortRec ys) = map snd xs == map snd ys
verifyResults (SortBit _) (SortRec _) = False
verifyResults (SortRec _) (SortBit _) = False