pathCount matrix = count (0,0)
where
count (i,j) = if i == n && j == n then 1 else a + b
where
a = if j == n || ((matrix !! i) !! (j+1)) then 0 else count (i, j + 1)
b = if i == n || ((matrix !! (i+1)) !! j) then 0 else count (i + 1, j)
-- ...
-- .#.
-- ...
testMatrix1 = [[ False, False, False ],[ False, True, False ],[ False, False, False ]]
testMatrix2
= map (map (== '#')) [ ".#..",
"...#",
".#..",
"...."
]
testMatrix3
= map (map (== '#')) [ "..#.",
"..#.",
"....",
".##."
]
main = do
print (pathCount testMatrix1
) -- 2 print (pathCount testMatrix2
) -- 3 print (pathCount testMatrix3
) -- 3
cGF0aENvdW50IDo6IFtbQm9vbF1dIC0+IEludApwYXRoQ291bnQgbWF0cml4ID0gY291bnQgKDAsMCkKICB3aGVyZQogICAgbiA9IGxlbmd0aCBtYXRyaXggLSAxCiAgICBjb3VudCAoaSxqKSA9IGlmIGkgPT0gbiAmJiBqID09IG4gdGhlbiAxIGVsc2UgYSArIGIKICAgICAgd2hlcmUKICAgICAgICBhID0gaWYgaiA9PSBuIHx8ICgobWF0cml4ICEhIGkpICEhIChqKzEpKSB0aGVuIDAgZWxzZSBjb3VudCAoaSwgaiArIDEpCiAgICAgICAgYiA9IGlmIGkgPT0gbiB8fCAoKG1hdHJpeCAhISAoaSsxKSkgISEgaikgdGhlbiAwIGVsc2UgY291bnQgKGkgKyAxLCBqKQoKdGVzdE1hdHJpeDEgOjogW1tCb29sXV0KLS0gLi4uCi0tIC4jLgotLSAuLi4KdGVzdE1hdHJpeDEgPSBbWyBGYWxzZSwgRmFsc2UsIEZhbHNlIF0sWyBGYWxzZSwgVHJ1ZSwgRmFsc2UgXSxbIEZhbHNlLCBGYWxzZSwgRmFsc2UgXV0KdGVzdE1hdHJpeDIgPSBtYXAgKG1hcCAoPT0gJyMnKSkgWwogICIuIy4uIiwKICAiLi4uIyIsCiAgIi4jLi4iLAogICIuLi4uIgogIF0KdGVzdE1hdHJpeDMgPSBtYXAgKG1hcCAoPT0gJyMnKSkgWwogICIuLiMuIiwKICAiLi4jLiIsCiAgIi4uLi4iLAogICIuIyMuIgogIF0KCm1haW4gPSBkbwogIHByaW50IChwYXRoQ291bnQgdGVzdE1hdHJpeDEpIC0tIDIKICBwcmludCAocGF0aENvdW50IHRlc3RNYXRyaXgyKSAtLSAzCiAgcHJpbnQgKHBhdGhDb3VudCB0ZXN0TWF0cml4MykgLS0gMwo=