diff_interrankings method
Identifie les choix dont l’interclassement diffère du plus fréquent.
Implementation
Map<int, Choice> diff_interrankings() {
Map<int, Choice> diff_dict = {};
if (choices.isEmpty) return {};
// Compter la fréquence de chaque interclassement
Map<double, int> interrankFrequencies = {};
for (var choice in choices.values) {
interrankFrequencies.update(
choice.interranking,
(count) => count + 1,
ifAbsent: () => 1,
);
}
// Trouver l'interclassement le plus fréquent
double reference_Rank;
List<double> mostCommonRanks = interrankFrequencies.entries
.where((e) => e.value > 1)
.map((e) => e.key)
.toList();
if (mostCommonRanks.isNotEmpty) {
// Si des interclassements sont communs, choisir le plus fréquent
reference_Rank = mostCommonRanks.first;
int maxFreq = interrankFrequencies[reference_Rank]!;
for (var rank in mostCommonRanks) {
if (interrankFrequencies[rank]! > maxFreq) {
reference_Rank = rank;
maxFreq = interrankFrequencies[rank]!;
}
}
} else {
// Sinon, prendre le plus élevé
reference_Rank = interrankFrequencies.keys.reduce((a, b) => a > b ? a : b);
}
// Comparer les autres vœux au reference_Rank
for (var entry in choices.entries) {
double currentRank = entry.value.interranking;
if ((currentRank - reference_Rank).abs() > 1e-6) {
diff_dict[entry.key] = entry.value;
}
}
return diff_dict;
}