aboutsummaryrefslogtreecommitdiff
path: root/haskell/wip/081-path_sum_two_ways.hs
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-09-04 14:51:49 +0200
committerCharles <sircharlesaze@gmail.com>2019-09-04 14:51:49 +0200
commit90ee38953d70b66aa78b5d09da53a63d3dba9f65 (patch)
tree6be4aea9cfac5908ad9e41304f112ece4b2249ba /haskell/wip/081-path_sum_two_ways.hs
parent08fddd1df75d4d9c76e7fa2e43c157232748abb6 (diff)
downloadproject_euler-90ee38953d70b66aa78b5d09da53a63d3dba9f65.tar.gz
project_euler-90ee38953d70b66aa78b5d09da53a63d3dba9f65.tar.bz2
project_euler-90ee38953d70b66aa78b5d09da53a63d3dba9f65.zip
problem 044 haskell, some wip
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
+