Move voters tool

This tool attempts to discover for a particular scoring rule whether there exists a Non-Convergent Nash Equilibrium where no on candidate can increase their score by changing their political position. This tool is based on movevoters but instead of having linear preferences, preferences are considered to be a circle with 1 adjacent to 0. As the LP always starts with position 0 and maximises the minimum distances between distinct positions it will avoid choosing position 1 if there exists an NE (and if it does choose 1 it will report there is no NE as there is no gap between 0 and 1). We can ensure No One Position is even considered by the LP by prefixing your input "N", which will disallow positions greater than 0.999. This legacy option should not be required as choosing position 1 is just a special case of lacking a gap between distinct positions. Prefixing your input with "T" will make the tool do some basic self-diagnostics.

As with movevoters, enter a scoring rule as a list of scores. For example "1 0 0 0" is Plurality (First Past the Post) on four candidates and "3 2 1" is Borda on three candidates. For each clustering of candidate positions it will say whether such a Nash Equilibrium exists with that clustering. Note that this tool will scale the scoring rule by some "Scale Factor" to ensure that the Linear Program is integer which hopefully prevents rounding being a problem.

You can add "C" to the string to switch to cumulative notation, so e.g. "C 1 1 1 1" means Borda on four candidates. You can add "v" to the string to increase verbosity of the output or "V" to increase the verbosity of the output further. "No NE: Non Zero Slope" means that no NE exists because a candidate with a unique position can increase their score by sliding slightly to the right or left. This should not occur in the round case, the slope should always be 0.
"No NE: No LP solution" means that there is no solution to the LP, so there is no NE.
"No NE: (no gap) ..." means that we can only find a solution for an NE if we allow one political position to be infinitesimally different from another; since reals do not have infinitesimals no real valued NE exists. This would also occur if we needed distinct positions 0 and 1, since on a circle 0=1.
"Exists NE: ..." means that we have found a solution and an NE exists.

Source code is available on Github.