NumPy allowed · plain Python earns 10 bonus points
Computed matrix × vector transformation
Decompose vector u into orthogonal components parallel and perpendicular to v.
Implement vector_projection(u, v): compute proj = (u . v / (v . v)) * v and rej = u - proj. Return {"proj": list[float], "rej": list[float]} with all numbers rounded to 4 decimals.
vector_projection(u: list[float], v: list[float]) -> dict[str, list[float]]