Closed LiamM32 closed 1 year ago
There is an error in your inputs.
Output 2 and 3 are equal and give the same result. But Vote N°3 is invalid. But output 1 has a different and valid vote N°3, it is valid. So the result is different, and it's normal.
Can you confirm that can I close this issue as not a bug? ;-)
If it's confusing, a project could be to migrate for permissive philosophy with silent error (can have som advantage) to a more strict error intolerant inputs.
I don't think the program should stop without results when this happens, but there should be warning messages for invalid votes, and it should display a limited number of invalid votes in the output. There should also be a function in the public API to verify that a vote is valid, if there isn't already.
Yes this turned out to be the case. Thank you as I could not find what was the difference between the two sets of votes. When corrected, E is the winner, as the Wikipedia example says should happen.
Just to test that the program works as it should for the Schulze Method, I tested the set of votes in the Wikipedia example.
I discovered some strange behaviour. Sometimes A wins, sometimes E wins with the Schulze method.
I found that if I run the program interactively, and run the votes through many different methods, then E is the winner of both Schulze methods. If I only run it through Schulze Winning & Schulze Margins, then A is the winner of both Schulze methods. If I use a .cvotes file, then A is the winner. output1.txt output2.txt output3.txt
It wouldn't let me upload the .cvotes file, so here it is: