computeScore method

String computeScore(
  1. ProposalTally tally
)

Score = Complete Majority Value

Implementation

String computeScore(ProposalTally tally) {
  var score = '';

  final analysis = Analysis();
  final amountOfGrades = tally.countAvailableGrades();
  final amountOfJudgments = tally.countJudgments();
  final amountOfDigitsForGrade = countDigits(amountOfGrades);
  final amountOfDigitsForAdhesionScore = countDigits(amountOfJudgments * 2);

  final mutatedTally = tally.clone();
  for (var i = 0; i < amountOfGrades; i++) {
    analysis.run(mutatedTally, favorContestation);

    score +=
        analysis.medianGrade.toString().padLeft(amountOfDigitsForGrade, '0');

    final adhesionScore = amountOfJudgments +
        analysis.secondGroupSize * analysis.secondGroupSign;

    score +=
        adhesionScore.toString().padLeft(amountOfDigitsForAdhesionScore, '0');

    mutatedTally.regradeJudgments(
      analysis.medianGrade,
      analysis.secondMedianGrade,
    );
  }

  return score;
}