# Use as follows, with the right path to the eq677/db directory.
# $ python db-testeq.py eq677/db/
import os
import sys

def test_eq513(mag, i, j):
    return mag[j][mag[j][mag[j][mag[j][i]]]] == i

folder = sys.argv[1]
result = []
for size_str in sorted(os.listdir(folder), key=int):
    size_int = int(size_str)
    subfolder = os.path.join(folder, size_str)
    for i in sorted(os.listdir(subfolder), key=int):
        print(size_str, i, end='\r')
        with open(os.path.join(subfolder, i), 'r') as f:
            mag = [[int(num) for num in line.split(' ') if num not in '\n']
                   for line in f if line not in '\n']
            if len(mag) != size_int or any(len(mi) != len(mag) for mi in mag):
                raise ValueError(f"error parsing db/{size_str}/{i}")
            if not all(test_eq513(mag, i, j) for i in range(size_int) for j in range(size_int)):
                result.append(os.path.join(size_str, i))
print(result)
print(len(result))
