package comsoc

// Vote par approbation
// thresholds est un slice d'entiers strictement positifs
func ApprovalSWF(p Profile, thresholds []int) (count Count, err error) {
	count = make(Count)
	alts := make([]Alternative, 0)
	for i := 1; i <= len(p[0]); i++ {
		alts = append(alts, Alternative(i))
	}
	err = checkProfileAlternative(p, alts)
	for index, alt := range p {
		for i := 0; i < thresholds[index]; i++ {
			count[alt[i]] += 1
		}
	}
	return
}

func ApprovalSCF(p Profile, thresholds []int) (bestAlts []Alternative, err error) {
	alts, err := ApprovalSWF(p, thresholds)
	bestAlts = maxCount(alts)
	return
}