From 90ee38953d70b66aa78b5d09da53a63d3dba9f65 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 4 Sep 2019 14:51:49 +0200 Subject: problem 044 haskell, some wip --- haskell/wip/081-path_sum_two_ways.hs | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 haskell/wip/081-path_sum_two_ways.hs (limited to 'haskell/wip/081-path_sum_two_ways.hs') 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 + -- cgit