Download eval.py from zeechimp/chaos-chip-reverse-universal: direct link, hf CLI and curl.
- Browser
- Download file 1.24 kB
-
https://huggingface.co/zeechimp/chaos-chip-reverse-universal/resolve/main/eval.py
- Command line
-
hf download hf://zeechimp/chaos-chip-reverse-universal/eval.py
-
curl -L -o eval.py https://huggingface.co/zeechimp/chaos-chip-reverse-universal/resolve/main/eval.py
1.24 kB
| #!/usr/bin/env python3 | |
| """Evaluate any chaos-chip genome at any (n, k). Pure numpy.""" | |
| import sys | |
| import numpy as np | |
| from itertools import combinations | |
| PI = np.pi | |
| def decode(byte): | |
| qi = (byte >> 4) & 0xF | |
| si = byte & 0xF | |
| return qi / 15.0 * 2 * PI - PI, si / 15.0 * 2 * PI - PI | |
| def chirp(n, q, s, c=2.0, alpha=1.5): | |
| i = np.arange(n)[:, None] | |
| j = np.arange(n)[None, :] | |
| return alpha * np.cos(s * i - c * q * j) | |
| def coloring(n, q, s): | |
| p = chirp(n, q, s) | |
| return np.sign(p - np.median(p) + 1e-9) | |
| def mono(C, k): | |
| n = C.shape[0] | |
| count = 0 | |
| for combo in combinations(range(n), k): | |
| total = sum(C[combo[a], combo[b]] | |
| for a in range(k) for b in range(a+1, k)) | |
| if abs(total) == k * (k - 1) // 2: | |
| count += 1 | |
| return count | |
| def eval_byte(byte, n, k): | |
| q, s = decode(byte) | |
| C = coloring(n, q, s) | |
| return mono(C, k) | |
| if __name__ == "__main__": | |
| if len(sys.argv) == 3: | |
| byte = int(sys.argv[1], 0) | |
| n = int(sys.argv[2]) | |
| for k in [3, 4, 5]: | |
| m = eval_byte(byte, n, k) | |
| print(f"n={n}, k={k}: mono = {m}") | |
| else: | |
| print("usage: python eval.py <byte> <n>") | |