{ "arcs": [ { "arc_id": "antaria_fundamentals", "title": "Antaria Fundamentals", "theme": "space", "difficulty": "easy", "concept_ids": ["even_odd", "sequence", "collect_and_reach", "loops_path", "shortest_path"] }, { "arc_id": "vault_of_divisors", "title": "Vault of Divisors", "theme": "bank", "difficulty": "medium", "concept_ids": ["comparison", "even_odd", "prime_gate", "sequence", "dfs_backtrack"] }, { "arc_id": "crystal_algorithms", "title": "Crystal Algorithms", "theme": "jungle", "difficulty": "hard", "concept_ids": ["shortest_path", "dfs_backtrack", "palindrome_path", "prime_gate", "collect_and_reach"] } ], "concepts": { "even_odd": { "id": "even_odd", "track": "PF", "title": "Even & Odd Tiles", "learning_outcome": "Use parity (n % 2) to decide which floor tiles are safe.", "description": "Only step on tiles whose number is even. Odd tiles overload Cody's suit!", "maze_type": "imperfect", "min_dim": 6, "max_dim": 9, "force_npc": false, "force_item": false, "maze_rule": { "type": "parity", "pass_if": "even" }, "hint_template": "Add the row and column mentally — if the tile number is divisible by 2, it's safe." }, "prime_gate": { "id": "prime_gate", "track": "PF", "title": "Prime Gate", "learning_outcome": "Recognize prime numbers (only divisible by 1 and itself).", "description": "Vault doors show a number. Only prime-numbered doors open!", "maze_type": "imperfect", "min_dim": 7, "max_dim": 10, "force_npc": true, "force_item": false, "maze_rule": { "type": "prime_only" }, "hint_template": "Primes: 2, 3, 5, 7, 11… Check each labeled tile before stepping." }, "comparison": { "id": "comparison", "track": "PF", "title": "Pick the Greater Path", "learning_outcome": "Compare two values and choose the larger (relational operators).", "description": "At a split, always take the path marked with the larger number.", "maze_type": "imperfect", "min_dim": 6, "max_dim": 8, "force_npc": false, "force_item": true, "maze_rule": { "type": "max_label_only" }, "hint_template": "When two numbered tiles branch off, step on the bigger number first." }, "palindrome_path": { "id": "palindrome_path", "track": "PF", "title": "Mirror Path (Palindrome)", "learning_outcome": "Understand palindromes — same read forward and backward.", "description": "The safe route uses palindrome numbers (like 121, 3, 7).", "maze_type": "perfect", "min_dim": 8, "max_dim": 11, "force_npc": true, "force_item": true, "maze_rule": { "type": "palindrome_only" }, "hint_template": "A palindrome reads the same both ways: 4, 11, 121 are palindromes; 12 is not." }, "sequence": { "id": "sequence", "track": "PF", "title": "Order Matters (Sequence)", "learning_outcome": "Execute steps in the correct order — algorithms are sequential.", "description": "Visit the expert FIRST, collect the key SECOND, then reach the exit.", "maze_type": "imperfect", "min_dim": 7, "max_dim": 10, "force_npc": true, "force_item": true, "maze_rule": { "type": "ordered_checkpoints" }, "hint_template": "Follow the mission checklist top to bottom — skipping a step locks the exit." }, "collect_and_reach": { "id": "collect_and_reach", "track": "DAA", "title": "Collect Before Exit", "learning_outcome": "Preconditions: you must gather data before the goal unlocks.", "description": "The exit stays locked until you pick up the required item.", "maze_type": "imperfect", "min_dim": 7, "max_dim": 10, "force_npc": false, "force_item": true, "maze_rule": { "type": "ordered_checkpoints" }, "hint_template": "Grab the item on the path before heading to the finish flag." }, "shortest_path": { "id": "shortest_path", "track": "DAA", "title": "Shortest Route (BFS idea)", "learning_outcome": "Among many paths, the fewest steps often wins — breadth-first thinking.", "description": "Multiple tunnels exist. Find the route with the fewest moves!", "maze_type": "imperfect", "min_dim": 8, "max_dim": 11, "force_npc": false, "force_item": true, "maze_rule": { "type": "none" }, "hint_template": "Trace dead ends on paper first — shorter paths avoid unnecessary turns." }, "dfs_backtrack": { "id": "dfs_backtrack", "track": "DAA", "title": "Explore & Backtrack (DFS)", "learning_outcome": "When stuck, return to the last junction and try another branch.", "description": "Huge maze with dead ends. Explore systematically; backtrack when blocked.", "maze_type": "perfect", "min_dim": 10, "max_dim": 14, "force_npc": true, "force_item": true, "maze_rule": { "type": "none" }, "hint_template": "Hit a dead end? Reverse to the last fork and choose a new direction." }, "loops_path": { "id": "loops_path", "track": "PF", "title": "Repeat Moves (Loops)", "learning_outcome": "Use repeat/loop blocks instead of stacking identical moves.", "description": "A long straight corridor — use a loop block instead of many move blocks!", "maze_type": "perfect", "min_dim": 8, "max_dim": 12, "force_npc": false, "force_item": false, "maze_rule": { "type": "none" }, "hint_template": "Count how many steps in the corridor, then use Repeat × N with one move inside." } } }