29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
|
from .data import load
|
||
|
|
||
|
def evaluate_answers(answers:list) -> dict:
|
||
|
playbooks = load('playbooks.json')
|
||
|
questions = load('questions.json')
|
||
|
scores = dict.fromkeys(playbooks,0)
|
||
|
for index, answer in enumerate(answers):
|
||
|
question = questions[index]
|
||
|
if type(answer) is list:
|
||
|
answer = answer[0:question['select']]
|
||
|
for _answer in answer:
|
||
|
for match in question['answers'][int(_answer)]['matches']: scores[match] += 1
|
||
|
else:
|
||
|
for match in question['answers'][int(answer)]['matches']: scores[match] += 1
|
||
|
return scores
|
||
|
|
||
|
def compile_results(results:dict) -> dict:
|
||
|
output = {
|
||
|
'all_playbooks': results.copy(),
|
||
|
'playbooks': [ ],
|
||
|
'score': max(results.values()),
|
||
|
'max_score': 0
|
||
|
}
|
||
|
for question in load('questions.json'):
|
||
|
output['max_score'] += question.pop('max', 1)
|
||
|
playbooks = load('playbooks.json')
|
||
|
for playbook, score in results.items():
|
||
|
if score == output['score']: output['playbooks'].append({playbook: playbooks[playbook].copy()})
|
||
|
return output
|