int score = 0;
List<Answer> playerAnswers = new ArrayList<>();
//cannot simply copy the values() of player.getAnswers(), because it is an unordered map (as it needs to be concurrent)
for (Piece piece : pieces) {
Answer answer = player.getAnswers().get(piece.getId());
if (answer.getTempo() > -1) {
int diff = Math.abs(answer.getTempo() - piece.getTempo());
if (diff < 3) {
score += 15;
} else {
score += 5 / Math.log10(diff);
}
}
if (answer.getMainInstrument() == piece.getMainInstrument()) {
score += 10;
}
if (answer.getMetreNumerator() == piece.getMetreNumerator() && answer.getMetreDenominator() == piece.getMetreDenominator()) {
score += 10;
}
playerAnswers.add(answer);
}
results.getScores().put(player.getName(), score);