sort :: [Int] -> [Int] -- testing 360 combinations of argument values -- pruning with 6/7 rules -- 2 candidates of size 1 -- 3 candidates of size 2 -- 4 candidates of size 3 -- 11 candidates of size 4 -- 23 candidates of size 5 -- tested 22 candidates sort [] = [] sort (x:xs) = insert x (sort xs) sort :: [Int] -> [Int] -- testing 360 combinations of argument values -- pruning with 1/2 rules -- 2 candidates of size 1 -- 1 candidates of size 2 -- 0 candidates of size 3 -- 4 candidates of size 4 -- tested 5 candidates sort xs = foldr insert [] xs insert :: Int -> [Int] -> [Int] -- testing 4 combinations of argument values -- pruning with 4/4 rules -- 2 candidates of size 1 -- 1 candidates of size 2 -- 2 candidates of size 3 -- 6 candidates of size 4 -- 2 candidates of size 5 -- 19 candidates of size 6 -- 6 candidates of size 7 -- 44 candidates of size 8 -- 62 candidates of size 9 -- 91 candidates of size 10 -- 334 candidates of size 11 -- 220 candidates of size 12 -- 1358 candidates of size 13 -- 1019 candidates of size 14 -- 4638 candidates of size 15 -- 6332 candidates of size 16 -- 14550 candidates of size 17 -- tested 14943 candidates insert x [] = [x] insert x (y:xs) = if x <= y then x:insert y xs else y:insert x xs qsort :: [Int] -> [Int] -- testing 360 combinations of argument values -- pruning with 8/8 rules -- 2 candidates of size 1 -- 1 candidates of size 2 -- 1 candidates of size 3 -- 3 candidates of size 4 -- 6 candidates of size 5 -- 9 candidates of size 6 -- 22 candidates of size 7 -- 37 candidates of size 8 -- 84 candidates of size 9 -- 169 candidates of size 10 -- 352 candidates of size 11 -- 767 candidates of size 12 -- 1600 candidates of size 13 -- 3499 candidates of size 14 -- tested 3667 candidates qsort [] = [] qsort (x:xs) = filter (x >) (qsort xs) ++ (x:filter (x <=) (qsort xs)) qsort :: [Int] -> [Int] -- testing 360 combinations of argument values -- pruning with 8/8 rules -- 2 candidates of size 1 -- 1 candidates of size 2 -- 1 candidates of size 3 -- 3 candidates of size 4 -- 6 candidates of size 5 -- 9 candidates of size 6 -- 28 candidates of size 7 -- 51 candidates of size 8 -- 128 candidates of size 9 -- 303 candidates of size 10 -- 648 candidates of size 11 -- 1621 candidates of size 12 -- 3592 candidates of size 13 -- 8475 candidates of size 14 -- tested 7794 candidates qsort [] = [] qsort (x:xs) = qsort (filter (x >) xs) ++ (x:qsort (filter (x <=) xs)) merge :: [Int] -> [Int] -> [Int] -- testing 360 combinations of argument values -- pruning with 4/4 rules -- 3 candidates of size 1 -- 8 candidates of size 2 -- 11 candidates of size 3 -- 23 candidates of size 4 -- 86 candidates of size 5 -- 72 candidates of size 6 -- 297 candidates of size 7 -- 322 candidates of size 8 -- 939 candidates of size 9 -- tested 1761 candidates cannot conjure merge :: [Int] -> [Int] -> [Int] -- testing 360 combinations of argument values -- pruning with 1/2 rules -- 2 candidates of size 1 -- 2 candidates of size 2 -- 3 candidates of size 3 -- 10 candidates of size 4 -- 21 candidates of size 5 -- 26 candidates of size 6 -- 61 candidates of size 7 -- 92 candidates of size 8 -- 203 candidates of size 9 -- 430 candidates of size 10 -- 1086 candidates of size 11 -- tested 1936 candidates cannot conjure