feat: Calculate and display unsolved problem percentages by language

This commit is contained in:
Paul Gauthier (aider) 2024-12-18 13:11:20 -08:00
parent 78e643970d
commit b71c9d539e

View file

@ -186,23 +186,21 @@ def analyze_exercise_solutions(dirs=None, topn=None):
hard_set = {ex for ex, models in exercise_solutions.items() if len(models) <= HARD_SET_NUM} hard_set = {ex for ex, models in exercise_solutions.items() if len(models) <= HARD_SET_NUM}
print(f"Total hard set exercises: {len(hard_set)}") print(f"Total hard set exercises: {len(hard_set)}")
# Count total problems and hard set problems by language # Count total problems and unsolved problems by language
lang_totals = defaultdict(int) lang_totals = defaultdict(int)
lang_hard_counts = defaultdict(int) lang_unsolved = defaultdict(int)
for exercise in all_exercises: for exercise in all_exercises:
lang = exercise.split("/")[1] # Get language from path lang = exercise.split("/")[1] # Get language from path
lang_totals[lang] += 1 lang_totals[lang] += 1
if not exercise_solutions[exercise]: # No models solved this exercise
lang_unsolved[lang] += 1
for exercise in hard_set: print("\nUnsolved problems by language:")
lang = exercise.split("/")[1] # Get language from path
lang_hard_counts[lang] += 1
print("\nHard set problems by language:")
print(f"{'Language':<12} {'Count':>5} {'Percent':>8}") print(f"{'Language':<12} {'Count':>5} {'Percent':>8}")
print("-" * 28) print("-" * 28)
for lang in sorted(lang_totals.keys()): for lang in sorted(lang_totals.keys()):
count = lang_hard_counts[lang] count = lang_unsolved[lang]
total = lang_totals[lang] total = lang_totals[lang]
pct = (count / total) * 100 pct = (count / total) * 100
print(f"{lang:<12} {count:>5} {pct:>7.1f}%") print(f"{lang:<12} {count:>5} {pct:>7.1f}%")