#!/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 ")