summaryrefslogtreecommitdiff
path: root/sort/pancakesort.hs
diff options
context:
space:
mode:
Diffstat (limited to 'sort/pancakesort.hs')
-rw-r--r--sort/pancakesort.hs30
1 files changed, 0 insertions, 30 deletions
diff --git a/sort/pancakesort.hs b/sort/pancakesort.hs
deleted file mode 100644
index 30993ba..0000000
--- a/sort/pancakesort.hs
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-pancakeSort :: Ord a => [a] -> [a]
-pancakeSort [] = []
-pancakeSort cakeStack =
- let selectedCake = indexOfLargest cakeStack
- cakeStack' = (doFlip (length cakeStack)) . (doFlip selectedCake) $ cakeStack
- in (pancakeSort (init cakeStack')) ++ [last cakeStack']
-
-
-
-indexOfLargest :: Ord a => [a] -> Int
-indexOfLargest (x:xs) =
- let f m i j y = if length y == 0
- then i
- else if (head y) > m
- then f (head y) j (j+1) (tail y)
- else f m i (j+1) (tail y)
- in f x 0 1 xs
-
-
-
-doFlip :: Int -> [a] -> [a]
-doFlip depth list =
- let prefix = take (depth + 1) list
- rest = drop (depth + 1) list
- in (reverse prefix) ++ rest
-
-