{ "formula": "towers-of-hanoi", "description": "Solve Towers of Hanoi for {disks} disks. Generates 2^{disks} - 1 steps, each a trivial move operation. Demonstrates mechanical structure generation for arbitrarily long workflows.", "version": 1, "vars": { "disks": { "description": "Number of disks to solve", "required": true }, "source_peg": { "description": "Starting peg", "default": "A" }, "target_peg": { "description": "Target peg", "default": "C" }, "auxiliary_peg": { "description": "Helper peg", "default": "B" } }, "generate": { "for-each": { "var": "move_num", "range": "1..2^{disks}" }, "step": { "id": "move-{move_num}", "description": "Move {computed_disk} from {computed_source} to {computed_target}. This is move {move_num} of {total_moves}. Simply execute the move - no decision needed.", "needs": ["move-{move_num - 1}"], "compute": { "disk": "lowest_set_bit({move_num})", "source": "peg_for_disk({disk}, {move_num}, 'source')", "target": "peg_for_disk({disk}, {move_num}, 'target')" } } }, "steps": [ { "id": "setup", "description": "Verify initial state: {disks} disks stacked on peg {source_peg}. All disks in order (largest on bottom)." }, { "id": "solve", "description": "Execute all {total_moves} moves to transfer tower from {source_peg} to {target_peg}.", "needs": ["setup"] }, { "id": "verify", "description": "Verify final state: all {disks} disks now on peg {target_peg}. Tower intact, all moves were legal.", "needs": ["solve"] } ], "example_3_disk": { "steps": [ {"id": "move-1", "description": "Move disk 1 from A to C"}, {"id": "move-2", "description": "Move disk 2 from A to B", "needs": ["move-1"]}, {"id": "move-3", "description": "Move disk 1 from C to B", "needs": ["move-2"]}, {"id": "move-4", "description": "Move disk 3 from A to C", "needs": ["move-3"]}, {"id": "move-5", "description": "Move disk 1 from B to A", "needs": ["move-4"]}, {"id": "move-6", "description": "Move disk 2 from B to C", "needs": ["move-5"]}, {"id": "move-7", "description": "Move disk 1 from A to C", "needs": ["move-6"]} ] } }