zip, not w/ itertools

main
jebba 2022-01-15 01:16:52 -07:00
parent c811d14ef7
commit 7d8e215c00
1 changed files with 7 additions and 7 deletions

View File

@ -6,16 +6,16 @@ import math, random, itertools
#generic distance metric stuff
def manhattan_distance(p1, p2):
return sum(abs(x - y) for x, y in itertools.zip(p1, p2))
return sum(abs(x - y) for x, y in zip(p1, p2))
def euclidean_distance(p1, p2):
return math.sqrt(sum((x - y) ** 2 for x, y in itertools.zip(p1, p2)))
return math.sqrt(sum((x - y) ** 2 for x, y in zip(p1, p2)))
def squared_euclidean_distance(p1, p2):
return sum((x - y) ** 2 for x, y in itertools.zip(p1, p2))
return sum((x - y) ** 2 for x, y in zip(p1, p2))
def chebyshev_distance(p1, p2):
return max(abs(x - y) for x, y in itertools.zip(p1, p2))
return max(abs(x - y) for x, y in zip(p1, p2))
def reciprical_distance(p1, p2):
d = manhattan_distance(p1, p2)
@ -37,16 +37,16 @@ def equal(p1, p2):
return manhattan_distance(p1, p2) == 0.0
def add(p1, p2):
return tuple(x + y for x, y in itertools.zip(p1, p2))
return tuple(x + y for x, y in zip(p1, p2))
def sub(p1, p2):
return tuple(x - y for x, y in itertools.zip(p1, p2))
return tuple(x - y for x, y in zip(p1, p2))
def scale(p, s):
return tuple(x * s for x in p)
def dot(p1, p2):
return sum(x * y for x, y in itertools.zip(p1, p2))
return sum(x * y for x, y in zip(p1, p2))
def length(p):
return math.sqrt(dot(p, p))