{% extends "base.html" %} {% block title %}Challenges{% endblock %} {% block page_title %}Challenges{% endblock %} {% block content %}
{{ summary.total }}
Total
{{ summary.active }}
Active
{{ summary.inactive }}
Inactive
{{ summary.solved }}
Solved
{{ summary.unsolved }}
Unsolved
{{ summary.invalid_detectors }}
Invalid Detectors
Definitions are loaded from YAML on startup. The active toggle is preserved across restarts — deactivated challenges stay deactivated until re-enabled here or via a YAML change.
| Challenge | Category | Difficulty | Pts | Solves | Players | Attempts | Hints | Avg Solve | Detector | Active |
|---|---|---|---|---|---|---|---|---|---|---|
|
{{ c.title }}
{% if c.prerequisites %}
requires: {{ c.prerequisites | join(', ') }}
{% endif %}
|
{{ c.category | replace('_', ' ') | title }} | {% set diff_colors = {"beginner": "text-green", "intermediate": "text-cyan", "advanced": "text-amber", "expert": "text-danger"} %} {{ c.difficulty }} | {{ c.points }} | {% if c.completions > 0 %} {{ c.completions }} {% else %} 0 {% endif %} | {{ c.players }} | {{ c.total_attempts }} | {% if c.hints_used > 0 %} {{ c.hints_used }} {% else %} 0 {% endif %} {% if c.hints_count > 0 %} ({{ c.hints_count }}) {% endif %} | {% if c.avg_solve_seconds %} {{ (c.avg_solve_seconds // 60) }}m {% else %} - {% endif %} | {% if c.detector_valid %} ✓ {% else %} ✗ {% endif %} |