Je travaille sur une affectation qui contient un fichier de données en texte brut.Détermination des poids optimaux pour calculer les cotes
Chaque ligne de texte représente une course automobile. Chaque ligne de texte comporte quatre chaînes, délimitées par des virgules.
Les chaînes représentent un nom de coureur. La première chaîne est le coureur qui est venu en premier, le second a obtenu la deuxième place, etc.
La tâche qui nous a été donnée est de lire dans ce fichier et de trier les coureurs en fonction de leur succès. Nous avons donné un algorithme de comparaison à utiliser:
int compareTo(Racer r1, Racer r2)
{
for (int i = 0; i < r1.positions.length; i++)
{
int diff = r1.positions[i] - r2.positions[i];
if (diff == 0)
{
continue;
}
return diff;
}
return 0;
}
donc essentiellement premières positions de place ont priorité sur les deuxièmes positions de place, deuxième par rapport au troisième, etc.
Mais il y a un problème avec ce code. Ma pensée serait qu'un coureur qui avait 100 secondes places et pas de premières serait mieux classé qu'un coureur avec une seule première place. Cela m'a amené à penser: cela n'aurait-il pas plus de sens d'avoir une pondération pour chaque position?
La pondération serait calculée pour chaque Racer:
int weight = w1*positions[0]
+ w2*positions[1]
+ w3*positions[2]
+ w4*positions[3];
Mais je suis tombé sur un problème. Comment puis-je calculer les poids optimaux pour chaque compte de position?
Sûrement je peux regarder les données existantes et calculer les poids de cela? Mon instinct me dit que je devrais essayer de le calculer en fonction du ratio des gagnants uniques par position ou quelque chose de similaire.
Existe-t-il un théorème permettant de calculer les poids? Je pense que je peux obtenir quelques points bonus si je peux montrer un meilleur algorithme;)
Merci d'avance.