zeechimp's picture
Upload 6 files
b440f50 verified
Raw History Blame Contribute Delete
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>")