diff --git a/comsoc/TieBreak.go b/comsoc/TieBreak.go new file mode 100644 index 0000000000000000000000000000000000000000..341f73b55cdab070240bd3ad91660224709334e4 --- /dev/null +++ b/comsoc/TieBreak.go @@ -0,0 +1,34 @@ + +package comsoc +import("fmt") + +func TieBreakFactory(orderedAlts []Alternative) (func ([]Alternative) (Alternative, error)){ + return func (bestAlts []Alternative) (Alternative, error) { + bestAlt := bestAlts[0] + for _,alt:= range bestAlts[1:]{ + if isPref(alt,bestAlt,orderedAlts){ + bestAlt = alt + } + } + return bestAlt, nil + } +} + +func Test_tieBreakFactory(){ + orderedAlts := []Alternative{8,9,6,1,3,2} + fmt.Println("Ordre strict :", orderedAlts) + lambda:=TieBreakFactory(orderedAlts) + bestAlts := []Alternative{3,6} + fmt.Println("Premières alternatives à départager :", bestAlts) + bestAlt,_ := lambda(bestAlts) + fmt.Println("Première alternative :", bestAlt) +} + +// func SWFFactory(func swf(p Profile) (Count, error), func ([]Alternative) (Alternative, error)) (func(Profile) ([]Alternative, error)){ + + +// return func ([]Alternative) (Alternative, error) { +// return orderedAlts[0],nil +// } +// } +//func SCFFactory(func scf(p Profile) ([]Alternative, error), func ([]Alternative) (Alternative, error)) (func(Profile) (Alternative, error))