# 离线只读验证：不访问网络、不操作设备，只读取同目录合成输入。
import json, math, struct, statistics
from pathlib import Path
def sample(times,values,t):
 if any(b<=a for a,b in zip(times,times[1:])): return '关键帧非递增'
 if t<times[0] or t>times[-1]: return '超出范围'
 for i in range(len(times)-1):
  if times[i]<=t<=times[i+1]:
   a=(t-times[i])/(times[i+1]-times[i]); return values[i]+a*(values[i+1]-values[i])
def check(d):
 return dict(samples=[sample(d['times'],d['values'],t) for t in d['queries']],invalid=sample(d['invalid_times'],d['values'],0.25))

if __name__=='__main__':
 fixture=json.loads(Path(__file__).with_name('fixture.json').read_text(encoding='utf-8'))
 actual=check(fixture['input'])
 assert actual==fixture['expected'], {'实际':actual,'预期':fixture['expected']}
 print(json.dumps({'状态':'通过','实际':actual,'边界':'仅离线合成样例，现场未测'},ensure_ascii=False))
