summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--1-1.hs18
1 files changed, 18 insertions, 0 deletions
diff --git a/1-1.hs b/1-1.hs
new file mode 100644
index 0000000..157dd52
--- /dev/null
+++ b/1-1.hs
@@ -0,0 +1,18 @@
+-- Gnome sort for christmas ;3
+gnomeSort :: Ord a => [a] -> [a]
+gnomeSort = gs []
+
+gs :: Ord a => [a] -> [a] -> [a]
+gs [] (x:front) = gs [x] front
+gs (p:back) (q:front) | p <= q = gs (q:p:back) front
+gs (p:back) (q:front) | p > q = gs back (q:p:front)
+gs xs [] = reverse xs
+
+main :: IO ()
+main = do
+ ls <- getContents
+ let ns = map (map read . words) . lines $ ls
+ let xs = map head ns
+ let ys = map last ns
+ let ms = zipWith ((abs .) . (-)) (gnomeSort xs) (gnomeSort ys)
+ print (sum ms)