33 lines
972 B
TypeScript
33 lines
972 B
TypeScript
const highStandardItems = [1, 4, 5, 10, 13];
|
|
const searchItems = [2, 3, 6, 8, 9, 12];
|
|
const difficultyItems = [7, 11];
|
|
|
|
function average(scores: number[]) {
|
|
return scores.reduce((sum, score) => sum + score, 0) / scores.length;
|
|
}
|
|
|
|
function scoreItems(answers: string[], items: number[]) {
|
|
return average(items.map((item) => Number(answers[item - 1] || 1)));
|
|
}
|
|
|
|
export function calculateMaximizerResults(answers: string[]) {
|
|
const itemScores = answers.slice(0, 13).map((answer) => Number(answer || 1));
|
|
const averageScore = average(itemScores);
|
|
|
|
let level: 'satisficer' | 'balanced' | 'maximizer' = 'balanced';
|
|
if (averageScore < 3.25) {
|
|
level = 'satisficer';
|
|
} else if (averageScore >= 4.75) {
|
|
level = 'maximizer';
|
|
}
|
|
|
|
return {
|
|
itemScores,
|
|
average: averageScore,
|
|
highStandards: scoreItems(answers, highStandardItems),
|
|
search: scoreItems(answers, searchItems),
|
|
difficulty: scoreItems(answers, difficultyItems),
|
|
level,
|
|
};
|
|
}
|