aboutsummaryrefslogtreecommitdiff
path: root/haskell/wip/081-path_sum_two_ways.hs
diff options
context:
space:
mode:
Diffstat (limited to 'haskell/wip/081-path_sum_two_ways.hs')
-rw-r--r--haskell/wip/081-path_sum_two_ways.hs38
1 files changed, 38 insertions, 0 deletions
diff --git a/haskell/wip/081-path_sum_two_ways.hs b/haskell/wip/081-path_sum_two_ways.hs
new file mode 100644
index 0000000..ec513c4
--- /dev/null
+++ b/haskell/wip/081-path_sum_two_ways.hs
@@ -0,0 +1,38 @@
+-- Path sum: two ways
+--
+-- Problem 81
+-- In the 5 by 5 matrix below, the minimal path sum from the top left to the bottom right,
+-- by only moving to the right and down, is indicated in bold red and is equal to 2427.
+--
+-- 131 673 234 103 18
+-- 201 96 342 965 150
+-- 630 803 746 422 111
+-- 537 699 497 121 956
+-- 805 732 524 37 331
+--
+-- Find the minimal path sum, in matrix.txt (right click and "Save Link/Target As..."),
+-- a 31K text file containing a 80 by 80 matrix, from the top left to the
+-- bottom right by only moving right and down.
+
+main = do
+ content <- readFile "../data/081_matrix.txt"
+ -- print (content)
+ let rhombus = parseMatrix content
+ print (rhombus)
+
+
+rectToRhombus :: [[Int]] -> [[Int]]
+
+
+parseMatrix :: String -> [[Int]]
+parseMatrix str = map (map (\x -> read x :: Int)) strList
+ where strList = map (split ',') (lines str)
+
+-- https://gist.github.com/yamanobori-old/0f74739f2a97d31ebe05
+split :: Eq a => a -> [a] -> [[a]]
+split _ [] = [[]]
+split delim str =
+ let (before, remainder) = span (/= delim) str
+ in before : case remainder of [] -> []
+ x -> split delim $ tail x
+