cryptohack wp (MATHEMATICS篇)(持续更新)
还是那句话,本篇中未提及的题目均在sources的其他篇目
Vectors

算向量点积,题目中也介绍了点积的计算,直接给代码:
import numpy as np
v = np.array([2, 6, 3])
w = np.array([1, 0, 0])
u = np.array([7, 7, 2])
result = np.dot(3 * (2 * v - w), 2 * u) #np.dot:计算向量的点积
print(result)
Size and Basis

代码如下:
import math
v = [4, 6, 2, 5]
size = math.sqrt(sum([x**2 for x in v]))
print(size)
Gram Schmidt

我这里直接用的chatgpt给出的代码:
import numpy as np
# Given basis vectors
v1 = np.array([4, 1, 3, -1])
v2 = np.array([2, 1, -3, 4])
v3 = np.array([1, 0, -2, 7])
v4 = np.array([6, 2, 9, -5])
# Apply Gram-Schmidt algorithm
u1 = v1
u2 = v2 - np.dot(v2, u1) / np.linalg.norm(u1)**2 * u1
u3 = v3 - np.dot(v3, u1) / np.linalg.norm(u1)**2 * u1 - np.dot(v3, u2) / np.linalg.norm(u2)**2 * u2
u4 = v4 - np.dot(v4, u1) / np.linalg.norm(u1)**2 * u1 - np.dot(v4, u2) / np.linalg.norm(u2)**2 * u2 - np.dot(v4, u3) / np.linalg.norm(u3)**2 * u3
``
# Extract the flag (second component of u4)
flag = u4[1]
# Print the flag value rounded to 5 significant figures
print(round(flag, 5))
What’s Lattice?

sage直接解:
sage: v = vector
sage: v1 = v([6,2,-3])
sage: v2 = v([5,1,4])
sage: v3 = v([2,7,1])
sage: A = matrix([v1,v2,v3])
sage:det(A)