95 lines
2.5 KiB
Text
95 lines
2.5 KiB
Text
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
|