Skip to content
Snippets Groups Projects
Commit 6bf36c9e authored by Gabrielle Van De Vijver's avatar Gabrielle Van De Vijver
Browse files

SWFFactory sans gestion d'erreurs

parent f6c978f2
No related branches found
No related tags found
1 merge request!1Gabrielle
......@@ -19,16 +19,60 @@ func Test_tieBreakFactory(){
fmt.Println("Ordre strict :", orderedAlts)
lambda:=TieBreakFactory(orderedAlts)
bestAlts := []Alternative{3,6}
fmt.Println("Premières alternatives à départager :", bestAlts)
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)){
func SWFFactory(swf func (Profile) (Count, error), tb func([]Alternative) (Alternative, error)) (func(Profile) ([]Alternative, error)){
// return func ([]Alternative) (Alternative, error) {
// return orderedAlts[0],nil
// }
// }
return func(p Profile) ([]Alternative, error){
//récupération du décompte
count,_ := swf(p)
//préparation de la sortie
var sorted_alts []Alternative
//PARCOURS DU DECOMPTE
for len(count) > 0{
//On prend les meilleures alternatives (avant tie break)
bestAlts := maxCount(count)
//On supprime les meilleures alternatives du décompte
for alt := range bestAlts{
delete(count, Alternative(alt))
}
//Départage
for len(bestAlts) > 0{
bestAlt,_ := tb(bestAlts)
//ajout de la meilleure alternative post-tie break
sorted_alts = append(sorted_alts, bestAlt)
//suppression de l'alternative dans bestAlts
indice := rank(bestAlt, bestAlts)
bestAlts=append(bestAlts[:indice], bestAlts[indice+1:]...)
//suppression de l'alternativ dans le compte
delete(count, Alternative(bestAlt))
}
}
return sorted_alts,nil
}
}
func Test_sWFFactory(){
//Définition de l'Ordre strict
orderedAlts := []Alternative{8,9,6,1,3,2}
fmt.Println("Ordre strict :", orderedAlts)
//Construction d'un profil avec alternatives ex aequo
profil := make([][]Alternative, 2)
profil[0] = []Alternative{1, 2, 3,4,5,6}
profil[1] = []Alternative{3, 2, 1,4,5,6}
fmt.Println("Profil :", profil)
//Construction de la fonction Tie Break
lambda:=TieBreakFactory(orderedAlts)
//Construction de la Social Welfare Factory à partir de la fonction swf + la fonction de TieBreak
mu := SWFFactory(BordaSWF,lambda)
//Construction d'une fonction
sorted_alts,_ := mu(profil)
fmt.Println("Alternatives strictement ordonnées selon la méthode de Borda :", sorted_alts)
}
//func SCFFactory(func scf(p Profile) ([]Alternative, error), func ([]Alternative) (Alternative, error)) (func(Profile) (Alternative, error))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment