summaryrefslogtreecommitdiffstats
path: root/upg3_2.py
diff options
context:
space:
mode:
Diffstat (limited to 'upg3_2.py')
-rw-r--r--upg3_2.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/upg3_2.py b/upg3_2.py
new file mode 100644
index 0000000..b216c1e
--- /dev/null
+++ b/upg3_2.py
@@ -0,0 +1,38 @@
+from functools import reduce
+
+def sum_of_ints(values):
+ return reduce(lambda x,y: x + y if type(y) == int else x, values, 0)
+
+def flatten_list1(vals):
+ res = []
+ for val in vals:
+ if type(val) == list:
+ res.extend(flatten_list1(val))
+ else:
+ res.append(val)
+ return res
+
+def flatten_list2(vals):
+ return flatten_list1(vals)
+
+def get_first_column(matrix):
+ return [row[0] for row in matrix]
+
+def get_nth_column(n, matrix):
+ return [row[n-1] for row in matrix]
+
+def get_all_columns(matrix):
+ return [get_nth_column(i+1, matrix) for i in range(len(matrix[0]))]
+
+def scalar_product(vec1, vec2):
+ return sum(map(lambda pair: pair[0] * pair[1], zip(vec1, vec2)))
+
+def matrix_square(matrix):
+ new_matrix = []
+ for row in matrix:
+ new_row = []
+ for i in range(len(row)):
+ new_row.append(scalar_product(row, get_nth_column(i+1, matrix)))
+ new_matrix.append(new_row)
+ return new_matrix
+