Skip to content

Instantly share code, notes, and snippets.

@WhiteBlackGoose
Created September 28, 2019 19:07
Show Gist options
  • Save WhiteBlackGoose/6f3fff25fc545ef1349201df7fb1ee13 to your computer and use it in GitHub Desktop.
Save WhiteBlackGoose/6f3fff25fc545ef1349201df7fb1ee13 to your computer and use it in GitHub Desktop.
class Vector(list):
def __init__(self, *el):
for e in el:
self.append(e)
def __add__(self, other):
if type(other) is Vector:
assert len(self) == len(other), "Error 0"
r = Vector()
for i in range(len(self)):
r.append(self[i] + other[i])
return r
else:
other = Vector.emptyvec(lens=len(self), n=other)
return self + other
def __sub__(self, other):
if type(other) is Vector:
assert len(self) == len(other), "Error 0"
r = Vector()
for i in range(len(self)):
r.append(self[i] - other[i])
return r
else:
other = Vector.emptyvec(lens=len(self), n=other)
return self - other
def __mul__(self, other):
if type(other) is Vector:
assert len(self) == len(other), "Error 0"
r = Vector()
for i in range(len(self)):
r.append(self[i] * other[i])
return r
else:
other = Vector.emptyvec(lens=len(self), n=other)
return self * other
def __truediv__(self, other):
if type(other) is Vector:
assert len(self) == len(other), "Error 0"
r = Vector()
for i in range(len(self)):
r.append(self[i] / other[i])
return r
else:
other = Vector.emptyvec(lens=len(self), n=other)
return self / other
def __pow__(self, other):
if type(other) is Vector:
assert len(self) == len(other), "Error 0"
r = Vector()
for i in range(len(self)):
r.append(self[i] ** other[i])
return r
else:
other = Vector.emptyvec(lens=len(self), n=other)
return self ** other
def __mod__(self, other):
return sum((self - other) ** 2) ** 0.5
def mod(self):
return self % Vector.emptyvec(len(self))
def dim(self):
return len(self)
def __str__(self):
if len(self) == 0:
return "Empty"
r = [str(i) for i in self]
return "< " + " ".join(r) + " >"
def _ipython_display_(self):
print(str(self))
@staticmethod
def emptyvec(lens=2, n=0):
return Vector(*[n for i in range(lens)])
@staticmethod
def randvec(dim):
return Vector(*[random.random() for i in range(dim)])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment