codecracker-backend / backend /data /maze_concept_catalog.json
faaizashiq's picture
Upload 2 files
f14399e verified
{
"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."
}
}
}