J'ai récemment recueilli, à l'aide d'un questionnaire, un ensemble d'opinions sur l'importance de divers composants logiciels. Considérant qu'une certaine forme de méthode de vote Condorcet serait le meilleur moyen d'obtenir un classement général, j'ai choisi d'utiliser OpenSTV pour l'analyser.Conversion format par candidat au format OpenSTV BLT
Mes données est sous forme de tableau, espace délimité, et ressemble plus ou moins comme:
A B C D E F G # Candidates
5 2 4 3 7 6 1 # First ballot. G is ranked first, and E is ranked 7th
4 2 6 5 1 7 3 # Second ballot
etc
Dans ce format, le nombre indique le rang et l'ordre de séquence indique le candidat. Chaque «candidat» a un rang (requis) de 1 à 7, où 1 signifie le plus important et 7 signifie le moins important. Aucun doublon n'est autorisé.
Ce format m'a semblé le moyen le plus naturel de représenter la sortie, étant une représentation directe du format de vote.
Le format OpenSTV/BLT utilise une méthode différente de représenter la même information, sur le plan conceptuel comme suit:
G B D C A F E # Again, G is ranked first and E is ranked 7th
E B G A D C F #
etc
Le format de fichier numérique réelle utilise l'index du candidat (base 1), plutôt que l'étiquette, et est donc plus comme:
7 2 4 3 1 6 5 # Same ballots as before.
5 2 7 1 4 3 6 # A -> 1, G -> 7
Dans ce format, le nombre indique le candidat, et l'ordre de séquence indique le rang. Le format réel, réel, BLT comprend également un poids initial et un zéro suivant pour indiquer la fin de chaque bulletin de vote, dont je ne me soucie pas trop pour cela.
Ma question est, quelle est la manière la plus élégante pour convertir du premier format à la (numérique) secondes?