# Alterna AI chapter 18: verified standalone examples
tokens_18a="a b c d e f g".split(); window_18a,overlap_18a=4,1
chunks_18a=[]
for start_18a in range(0,len(tokens_18a),window_18a-overlap_18a):
    chunks_18a.append((start_18a,tokens_18a[start_18a:start_18a+window_18a]))
assert chunks_18a==[(0,['a','b','c','d']),(3,['d','e','f','g']),(6,['g'])]


from math import sqrt
query_18b=[1.0,1.0]; docs_18b={'d1':[1.0,0.0],'d2':[1.0,1.0],'d3':[-1.0,0.0]}
def cosine_18b(a_18b,b_18b):
    return sum(x*y for x,y in zip(a_18b,b_18b))/sqrt(sum(x*x for x in a_18b)*sum(y*y for y in b_18b))
ranking_18b=sorted(docs_18b,key=lambda key_18b:(-cosine_18b(query_18b,docs_18b[key_18b]),key_18b))
assert ranking_18b==['d2','d1','d3']


passages_18c=[(.9,3,'d1'),(.8,2,'d2'),(.7,4,'d3')]; budget_18c=5; selected_18c=[]
for score_18c,cost_18c,source_18c in sorted(passages_18c,key=lambda row_18c:-row_18c[0]):
    if cost_18c<=budget_18c:
        selected_18c.append(source_18c); budget_18c-=cost_18c
assert selected_18c==['d1','d2'] and budget_18c==0


call_18d={'name':'add','arguments':{'a':2,'b':3}}
args_18d=call_18d.get('arguments',{})
valid_18d=(call_18d.get('name')=='add' and set(args_18d)=={'a','b'} and
           all(isinstance(args_18d[k],(int,float)) and not isinstance(args_18d[k],bool) for k in ('a','b')))
result_18d=args_18d['a']+args_18d['b'] if valid_18d else None
assert valid_18d and result_18d==5


events_18e=[(1,'a'),(2,'b'),(3,'c'),(4,'d')]; limit_18e=3
working_18e=events_18e[-limit_18e:]
durable_18e=[]; consent_18e=False
if consent_18e: durable_18e.append({'fact':'demo','source':4})
assert working_18e==[(2,'b'),(3,'c'),(4,'d')] and durable_18e==[]


plan_18f=['lookup','lookup','finish']; allowed_18f={'lookup','finish'}; max_steps_18f=3
trace_18f=[]; status_18f='budget_exhausted'
for action_18f in plan_18f[:max_steps_18f]:
    assert action_18f in allowed_18f
    trace_18f.append(action_18f)
    if action_18f=='finish': status_18f='completed'; break
assert trace_18f==plan_18f and status_18f=='completed'

print('Chapter 18: 6 examples PASS')
