> EIGENVECTOR CIPHER
The idea in plain English: Imagine a machine that stretches or squishes things. You put a shape in, and it comes out distorted. Most shapes change direction when they go through. But some special shapes — the eigenvectors — only get stretched or shrunk without changing direction. They might get 2× bigger, or 3× smaller, but they point the same way. The puzzle gives you the machine (a matrix). You need to find the arrows that don't change direction — those arrows, when converted to ASCII codes, spell the answer.
Why this really exists: Eigenvectors are everywhere. Google's PageRank algorithm uses them to rank web pages. Facial recognition (eigenfaces) uses them to identify people. Quantum mechanics uses them to describe what particles can do. PCA (Principal Component Analysis) — used in data science and machine learning — is entirely built on eigenvectors. Even the vibration modes of a guitar string are eigenvectors of the wave equation.
▸ Concrete Example
Matrix M = [[2, 0], [0, 3]]. Let's test some vectors:
M × [0, 1] = [0, 3] → stretched by 3×, direction unchanged! → eigenvector ✓
M × [1, 1] = [2, 3] → changed direction → NOT an eigenvector ✗
Eigenvectors: [1,0] with eigenvalue 2, [0,1] with eigenvalue 3
[1,0] → ASCII code 65 → 'A', [0,1] → ASCII 66 → 'B'
Each eigenvector's numeric values (when rounded) give ASCII codes. The sequence of eigenvectors ordered by eigenvalue (smallest to largest) gives the answer word.
▸ How to Solve (Step by Step)
1. The puzzle gives you a square matrix (a grid of numbers)
2. Compute the matrix's eigenvectors and eigenvalues (use numpy.linalg.eig)
3. Sort eigenvectors by their eigenvalues (ascending)
4. Round eigenvector entries to the nearest integer
5. Convert each integer to an ASCII character
6. Join all characters → the answer word!
M = np.array([[...], [...], ...]) # the matrix from puzzle data
vals, vecs = np.linalg.eig(M)
sorted_idx = np.argsort(vals)
word = ''.join(chr(int(round(vecs[i, j]))) for j in range(...))
# Note: eigenvectors are columns of vecs, need proper extraction
💡 Real eigenvectors can be any length (scaled version is still the same eigenvector). The puzzle ensures values land on valid ASCII codes (32-126) when rounded.
▸ Real-World Applications
- Google PageRank: Ranks web pages using the eigenvector of the web's link matrix
- Facial recognition: "Eigenfaces" — eigenvectors of face image datasets
- Quantum mechanics: The Schrödinger equation is an eigenvalue problem
- Data science (PCA): Principal Component Analysis reduces data dimensions using eigenvectors
- Earthquake engineering: Buildings have natural vibration frequencies (eigenvalues of the structural matrix)