"""Offline NE minecart and boulder model from installed public puzzle source.""" import ast,json,heapq,re,subprocess,copy,pickle from pathlib import Path from collections import deque from static_cart_model import cart_transition R=Path(__file__).resolve().parents[1];ns=dict(ROOT=R,json=json,heapq=heapq,re=re) t=ast.parse((R/'scripts/nav.py').read_text());f=next(n for n in t.body if isinstance(n,ast.FunctionDef)and n.name=='route');exec(compile(ast.Module(body=[f],type_ignores=[]),'route','exec'),ns) bn=dict(ROOT=R,json=json,heapq=heapq,re=re);exec(ast.unparse(f).replace('graph = {}','jumps = {}; graph = {}').replace('native_jump = terrain(n) == 1','native_jump = False'),bn) ids=[133,140,141];vs=[493,494,495];positions=[{0:(103,29),1:(99,23)},{0:(116,32),1:(106,29),2:(109,21)},{0:(105,19),1:(94,17),2:(96,20)}];commands=[json.loads((R/f'work/192-ne-cart{i}.json').read_text())['pages'][1]['list']for i in ids] graphs=[];bgraphs=[] for mask in range(8): ex={'switches':{str(1123+i):bool(mask&(1<10000:raise SystemExit('Limit') adjacent=lambda xy:sorted(rr.intersection({(xy[0]+dx,xy[1]+dy)for dx,dy in [(0,1),(0,-1),(1,0),(-1,0)]})) for j,eid in [(0,134),(2,136)]: e=events[str(eid)] for a in adjacent((e['x'],e['y'])):q.append((a,mask^(1<