-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlinAlg.hs
More file actions
107 lines (63 loc) · 1.65 KB
/
Copy pathlinAlg.hs
File metadata and controls
107 lines (63 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
transpose (transpose [[1..4],[4..7]])
tr ((x:xs):xss) = x : tr xss
transpose :: [[a]] -> [[a]]
transpose [] = []
transpose ([] : xss) = transpose xss
transpose ((x:xs) : xss) = (x : [h | (h:_) <- xss]) : transpose (xs : [ t | (_:t) <- xss])
let asdf xss = [h | (h:_) <- xss]
:{
let transpose :: [[a]] -> [[a]]
transpose [] = []
transpose ([] : xss) = transpose xss
transpose y@((x:xs):xss) = fdsa y : transpose (xs: [ t | (_:t) <- xss])
:}
(transpose [[1..4],[4..7]])
transpose
:{
let fdsa [] = []
fdsa (x:xs) = head x : fdsa xs
:}
[x + x | x <- [1..4]]
transpose (transpose [[1..4],[4..7]])
asdf [[1..4],[4..7]]
fdsa [[1..4],[4..7]]
asdf [[1..4]]
transpose (
:{
let unitV _ 0 = []
unitV (-1) m = 0 : unitV (-1) (m-1)
unitV 0 m = 1 : unitV (-1) (m-1)
unitV n m = 0 : unitV (n-1) (m-1)
:}
-- a little cleaner
:{
let unitV _ 0 = []
unitV 0 m = 0 : unitV (-1) (m-1)
unitV 1 m = 1 : unitV 0 (m-1)
unitV n m = 0 : unitV (n-1) (m-1)
:}
-- cleanest, the second line in the above definition is redundant
:{
let unitV _ 0 = []
unitV 1 m = 1 : unitV 0 (m-1)
unitV n m = 0 : unitV (n-1) (m-1)
:}
unitV 2 6
unitV 3 5
-- my solution for a 5x5 identity matrix
map (\x -> unitV x 5) [1..5]
let unitMatDimn n = map (\x -> unitV x n) [1..n]
let unitMatDimn2 n = map (flip unitV n) [1..n]
unitMatDimn2 3
unitMatDimn2 8
:t flip
unitMatDimn 3
unitMatDimn 8
let matI n = [ [fromEnum $ i == j | i <- [1..n]] | j <- [1..n]]
fromEnum 'a'
map fromEnum "asdf"
showMat $ matI 3
:{
let showMat :: [[Int]] -> String
showMat = unlines . map (unwords . map show)
:}