Module Stable_marriage_problem { enum men {abe=0, bob, col, dan, ed, fred, gav, hal, ian, jon} enum women {abi=0, bea, cath, dee, eve, fay, gay, hope, ivy, jan} gosub fillarrays engage=list function fill(n, v) { dim a(n) as boolean=v =a() } mfree=fill(10, true) wfree=fill(10, true) md=men mw=women while mfree#have(true) m=mfree#pos(true) w=pw#val(m)#val(0) md=m mw=w if wfree#val(w) then md=m mw=w return wfree, w:=false return mfree, m:=false pp=pw#val(m) if len(pp)=1 then return pw, m:=(,) else return pw, m:=pp#slice(1,) end if append engage, w:=m else.if exist(engage, w) then mm=eval(engage) if (pm#val(w)#pos(m))<(pm#val(w)#pos(mm)) then md=m md=mm return engage, w:=m return mfree, mm:=true, m:=false else md=mm mw=w pp=pw#val(m) if len(pp)=1 then return pw, m:=(,) else return pw, m:=pp#slice(1,) end if end if end if end while kk=each(engage) list1=list while kk md=eval(kk) mw=val(eval$(kk!)) append list1, eval$(mw)+" and "+eval$(md)+"." end while sort list1 kk=each(list1) document kkk$ Print "NEWLYWEDS:" while kk kkk$=format$("{0::-2}.{1}",kk^+1, eval$(kk))+{ } print format$("{0::-2}.{1}",kk^+1, eval$(kk)) end while clipboard kkk$ end fillarrays: flush ' empty stack of values data (abi, eve, cath, ivy, jan, dee, fay, bea, hope, gay) data (cath, hope, abi, dee, eve, fay, bea, jan, ivy, gay) data (hope, eve, abi, dee, bea, fay, ivy, gay, cath, jan) data (ivy, fay, dee, gay, hope, eve, jan, bea, cath, abi) data (jan, dee, bea, cath, fay, eve, abi, ivy, hope, gay) data (bea, abi, dee, gay, eve, ivy, cath, jan, hope, fay) data (gay, eve, ivy, bea, cath, abi, dee, hope, jan, fay) data (abi, eve, hope, fay, ivy, cath, jan, bea, gay, dee) data (hope, cath, dee, gay, bea, abi, fay, ivy, jan, eve) data (abi, fay, jan, gay, eve, bea, dee, cath, ivy, hope) pw=array([]) ' we get array of arrays data (bob, fred, jon, gav, ian, abe, dan, ed, col, hal) data (bob, abe, col, fred, gav, dan, ian, ed, jon, hal) data (fred, bob, ed, gav, hal, col, ian, abe, dan, jon) data (fred, jon, col, abe, ian, hal, gav, dan, bob, ed) data (jon, hal, fred, dan, abe, gav, col, ed, ian, bob) data (bob, abe, ed, ian, jon, dan, fred, gav, col, hal) data (jon, gav, hal, fred, bob, abe, col, ed, dan, ian) data (gav, jon, bob, abe, ian, dan, hal, ed, col, fred) data (ian, col, hal, gav, fred, bob, abe, ed, jon, dan) data (ed, hal, gav, abe, bob, jon, col, ian, fred, dan) pm=array([]) return } Stable_marriage_problem