-
Notifications
You must be signed in to change notification settings - Fork 1
/
vectors.py
114 lines (109 loc) · 2.57 KB
/
vectors.py
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
107
108
109
110
111
112
113
114
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="karlo"
__date__ ="$Jun 25, 2011 5:09:49 PM$"
def exercise07():
"""
>>> add_vectors(1,[0,0])
-1
>>> add_vectors([1,2,3],[1,2])
-2
>>> add_vectors([1, 0], [1, 1])
[2, 1]
>>> add_vectors([1, 2], [1, 4])
[2, 6]
>>> add_vectors([1, 2, 1], [1, 4, 3])
[2, 6, 4]
>>> add_vectors([11, 0, -4, 5], [2, -4, 17, 0])
[13, -4, 13, 5]
"""
def exercise08():
"""
>>> scalar_mult([1,2],[1,2])
-1
>>> scalar_mult([1,2],5)
-1
>>> scalar_mult(5, [1, 2])
[5, 10]
>>> scalar_mult(3, [1, 0, -1])
[3, 0, -3]
>>> scalar_mult(7, [3, 0, 5, 11, 2])
[21, 0, 35, 77, 14]
"""
def exercise09():
"""
>>> dot_product(1,[1,2])
-1
>>> dot_product([1,2],[1,2,3])
-2
>>> dot_product([1, 1], [1, 1])
2
>>> dot_product([1, 2], [1, 4])
9
>>> dot_product([1, 2, 1], [1, 4, 3])
12
>>> dot_product([2, 0, -1, 1], [1, 5, 2, 0])
0
"""
def exercise10():
"""
>>> cross_product(1,[1,2])
-1
>>> cross_product([1,2],[1,2,3])
-2
>>> cross_product([1, 1, 1], [1, 1])
-3
>>> cross_product([1, 2, 3], [1, 4, 3])
[-6, 0, 2]
>>> cross_product([1, 2, 1], [1, 4, 3])
[2, -2, 2]
>>> cross_product([2, 0, -1], [1, 5, -2])
[5, 3, 10]
"""
def cross_product(u,v):
if not isinstance(u,list) or not isinstance(v,list):
return -1
elif len(u) != 3:
return -2
elif len(u) != len(v):
return -3
else:
rez = [0, 0, 0]
rez[0] = u[2-1]*v[3-1] - u[3-1]*v[2-1]
rez[1] = u[3-1]*v[1-1] - u[1-1]*v[3-1]
rez[2] = u[1-1]*v[2-1] - u[2-1]*v[1-1]
return rez
def dot_product(u,v):
if not isinstance(u,list) or not isinstance(v,list):
return -1
elif len(u) != len(v):
return -2
else:
rez = []
for (index,item) in enumerate(u):
rez.append(item*v[index])
return sum(rez)
def scalar_mult(s,v):
if not isinstance(s,int) or not isinstance(v,list):
return -1
else:
rez = []
for item in v:
rez.append(s*item)
return rez
def add_vectors(u,v):
if not isinstance(u,list) or not isinstance(v,list):
return -1
elif len(u) != len(v):
return -2
else:
rez = []
for (index,item) in enumerate(u):
rez.append(item+v[index])
return rez
if __name__ == "__main__":
import doctest
doctest.testmod()
exercise07()
exercise08()
exercise09()