import tiles as R, sys, json from collections import defaultdict def ang(room): a=defaultdict(int) for t in room: for v in t: a[v]+=R.angle_units(t,v) return a def violations(room,S,D): a=ang(room); out=[] for v,x in a.items(): if v in (S,D): if x!=8: out.append(v) elif x in (4,8): out.append(v) return out def edge_adjacent(u,room): return any(len(set(u)&set(t))==2 for t in room) best=[None] def dfs(room,core,S,D,depth,seen): key=frozenset(room) if key in seen: return seen.add(key) v=violations(room,S,D) if not v: if R.connected(room): p=R.polygon(room) if p and (best[0] is None or len(p)