summaryrefslogtreecommitdiffstats
path: root/vector_lenghts.py
diff options
context:
space:
mode:
Diffstat (limited to 'vector_lenghts.py')
-rw-r--r--vector_lenghts.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/vector_lenghts.py b/vector_lenghts.py
new file mode 100644
index 0000000..af0c57b
--- /dev/null
+++ b/vector_lenghts.py
@@ -0,0 +1,34 @@
+"""
+> Generate N amount of 3-dimensional vectors with random floating point values and sort them
+> Then square each component, sum them and take the square root (aka get the length of the vector), do this in parallel.
+> Then zip the lengths together with their corresponding vectors
+> Then print out the first vector and its length and ensure that it's same as what you started with
+
+"""
+
+
+import math
+import random
+from multiprocessing import Pool
+
+def get_vectors(n: int, d: int) -> list:
+ return [gen_vector(d) for i in range(n)]
+
+def gen_vector(d: int) -> list:
+ return sorted([random.uniform(1, 10) for i in range(d)])
+
+def vector_length(vectors: list) -> list:
+ with Pool(4) as p:
+ return p.map(find_length, vectors)
+
+def find_length(vector: list) -> float:
+ return math.sqrt(sum([(component*component) for component in vector]))
+
+if __name__ == "__main__":
+
+ n = 999
+ d = 3
+ vectors = get_vectors(n, d)
+ length = vector_length(vectors)
+ vl = list(zip(vectors, length))
+ print(vl) # ToDo \ No newline at end of file