"""本主题专属离线算法，仅读取同目录合成JSON，不联网、不控制设备。"""
import csv, json, math, re, struct
from pathlib import Path
from fractions import Fraction
BASE=Path(__file__).resolve().parent
data=json.loads((BASE/'input.json').read_text(encoding='utf-8'))['data']
def pattern(p):
 out='';i=0
 while i<len(p):
  c=p[i]
  if c=='*':out+='[^/]*'
  elif c=='?':out+='[^/]'
  elif c=='{':
   j=p.index('}',i);out+='(?:'+'|'.join(re.escape(x) for x in p[i+1:j].split(','))+')';i=j
  elif c in '[]':raise ValueError('本夹具未实现字符集语法')
  else:out+=re.escape(c)
  i+=1
 return re.compile('^'+out+'$')
rows=[]
for p in data['patterns']:
 matches=[a for a in data['addresses'] if pattern(p).fullmatch(a)]
 rows.append({'pattern':p,'matches':matches,'outside_allowlist':sorted(set(matches)-set(data['allowed']))})
assert [len(r['matches']) for r in rows]==[4,3,2]
result={'patterns':rows,'implemented_subset':['*','?','{a,b}'],'methods_executed':False}
(BASE/'result.json').write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
print(json.dumps(result,ensure_ascii=False))
