Hi,

I believe this code is good for VFA. I am assuming there is a "getMin"
similar to "getMax".

I might also like to implement two-slot MMPO (average rating as the
approval cutoff).

It would be interesting to try implementing a "strategic Borda." Perhaps
start with a zero-info approval round, and then have everyone vote Borda
sincerely, except that the better frontrunner is ranked best, and the
worst frontrunner is ranked worst. This would probably look as interesting
as the IRV results.

Kevin Venzke

void VoteForAndAgainst::runElection( int* winnerR, const VoterArray& they )
{
    int i;
    int* fptally;
    int* lptally;
    int winner;
    int numc = they.numc;
    int numv = they.numv;
    
    // init things
    fptally = new int[numc];
    lptally = new int[numc];
    for ( i = 0; i  < numc; i++ ) {
        fptally[i] = 0;
        lptally[i] = 0;
    }
    
    // count first and last prefs for each candidate
    for ( i = 0; i < numv; i++ ) {
        fptally[they[i].getMax()]++;
        lptally[they[i].getMin()]++;
    }

    // find winner
    {
        int m = 0;
        winner = 0;
        for ( i = 0; i < numc; i++ ) {
            if ( fptally[i] >= m && lptally[i]*2 <= numv ) {
                m = fptally[i];
                winner = i;
            }
        }
    }
    delete [] fptally;
    delete [] lptally;
    if ( winnerR ) *winnerR = winner;
}



        

        
                
___________________________________________________________________________ 
Yahoo! Mail réinvente le mail ! Découvrez le nouveau Yahoo! Mail et son 
interface révolutionnaire.
http://fr.mail.yahoo.com
----
election-methods mailing list - see http://electorama.com/em for list info

Reply via email to