package comsoc import("errors") func TieBreakFactory(tieBreakAlts []Alternative) (func ([]Alternative) (Alternative, err error)) { return func(alts []Alternative) (Alternative, err error) { if len(alts) == 0 || alts == nil { return -1, errors.New("003: NullAlternatives") } for _,alt := range(alts) { for _,tieBreakAlt := range(tieBreakAlts) { if alt == tieBreakAlt { return alt, nil } } } return -1, errors.New("002: NoTieBreakAlternativeFound") } } func SWFFactory(swf1 func (Profile) (Count, error), tieBreak func ([]Alternative) (Alternative, error)) (swf2 func(Profile) (alts []Alternative, err error)) { return func(p Profile) (alts Alternative, err error) { // alts, _ := maxCount(swf1(p)) // alt, _ := tieBreak(alts) // return alt, nil // il faut trifouiller le count } } func SCFFactory(scf1 func (Profile) ([]Alternative, error), tieBreak func ([]Alternative) (Alternative, error)) (scf2 func(Profile) (alt Alternative, err error)) { return func(p Profile) (alt Alternative, err error) { alts, _ := scf1(p) alt, _ := tieBreak(alts) return alt, nil } } // func TieBreak(a []Alternative) (Alternative, err error) { // // if len(a) == 0 || a == nil { // // return _, errors.New("002: NullAlternatives") // // } // // for _,alt := range a { // // // // } // 0-votes alternatives are not included // // return nil, nil // }