package comsoc

import (
	"fmt"
)

func BordaSWF(p Profile) (count Count, err error) {
	count = make(Count)
	err = checkProfileFromProfile(p)
	if err != nil {
		return nil, err
	}
	nAlts := len(p[0])
	for _, row := range p {
		for i := 0; i < nAlts; i++ {
			count[row[i]] += nAlts - 1 - i
		}
	}
	return
}

func BordaSCF(p Profile) (bestAlts []Alternative, err error) {
	count, err := BordaSWF(p)
	if err != nil {
		return nil, err
	}
	return maxCount(count), err
}

func Test_borda() {
	profil := GenerateProfile(3, 5)
	fmt.Println("Profil :", profil)
	count, _ := BordaSWF(profil)
	fmt.Println("Décompte :", count)
	winners, _ := BordaSCF(profil)
	fmt.Println("Vainqueur(s) :", winners)
}