Represent scheduling, allocation, and logic puzzles as variables, domains, and constraints, then solve them with propagation and backtracking.