reasoning-gym/examples/exercises/algebra/simple_equations_examples.py
2025-02-08 20:59:59 +00:00

99 lines
4 KiB
Python

"""Examples of generated problems from the SimpleEquations exercise.
This file demonstrates different types of linear equation problems that can be generated
at various difficulty levels.
"""
from reasoning_gym.curricula.algebra.simple_equations_curriculum import SimpleEquationsCurriculum
from reasoning_gym.exercises.algebra.simple_equations import SimpleEquationsExercise
import random
def main():
# Initialize with fixed seed for reproducibility
curriculum = SimpleEquationsCurriculum()
exercise = SimpleEquationsExercise()
curriculum.rng = random.Random(42)
print("\n========================================\n")
# Level 0: Basic equations (ax = b)
curriculum.set_attr_level("num_terms", 0) # 2 terms
curriculum.set_attr_level("value", 0) # Small values (1-10)
curriculum.set_attr_level("operators", 0) # Just + operator
curriculum.set_attr_level("sign", 0) # No negative signs
curriculum.set_attr_level("var_name", 0) # Basic variables (x, y, z)
problem = exercise.generate(curriculum)
print("Level 0 (Basic Equations):")
print(problem)
print("\n========================================\n")
# Level 1: Two-term equations with negatives (ax + b = c)
curriculum.set_attr_level("num_terms", 1) # 3 terms
curriculum.set_attr_level("value", 1) # Medium values (1-50)
curriculum.set_attr_level("operators", 1) # +, - operators
curriculum.set_attr_level("sign", 1) # Allow negative signs
curriculum.set_attr_level("var_name", 0) # Basic variables
problem = exercise.generate(curriculum)
print("Level 1 (Two-term Equations):")
print(problem)
print("\n========================================\n")
# Level 2: Complex equations with multiple terms
curriculum.set_attr_level("num_terms", 2) # 4 terms
curriculum.set_attr_level("value", 2) # Large values (1-100)
curriculum.set_attr_level("operators", 2) # +, - operators
curriculum.set_attr_level("sign", 1) # Allow negative signs
curriculum.set_attr_level("var_name", 1) # All lowercase letters
problem = exercise.generate(curriculum)
print("Level 2 (Complex Equations):")
print(problem)
print("\n========================================\n")
# Random Examples with Different Seeds
print("Random Examples (Different Seeds):")
for seed in range(10, 15):
curriculum.rng = random.Random(seed)
# Randomly set curriculum levels
curriculum.set_attr_level("num_terms", random.randint(0, 2))
curriculum.set_attr_level("value", random.randint(0, 2))
curriculum.set_attr_level("operators", random.randint(0, 2))
curriculum.set_attr_level("sign", random.randint(0, 1))
curriculum.set_attr_level("var_name", random.randint(0, 2))
problem = exercise.generate(curriculum)
print(f"\nRandom Example (Seed {seed}):")
print(problem)
print("\n========================================\n")
# Special Cases
print("Special Cases:")
# Case 1: Greek variable names with complex terms
curriculum.set_attr_level("num_terms", 2) # 4 terms
curriculum.set_attr_level("value", 1) # Medium values
curriculum.set_attr_level("var_name", 2) # Greek letters
problem = exercise.generate(curriculum)
print("\nGreek Variables with Complex Terms:")
print(problem)
# Case 2: Maximum terms with small values
curriculum.set_attr_level("num_terms", 2) # Maximum terms
curriculum.set_attr_level("value", 0) # Small values
curriculum.set_attr_level("var_name", 0) # Basic variables
problem = exercise.generate(curriculum)
print("\nMaximum Terms with Small Values:")
print(problem)
# Case 3: Simple equation with large values
curriculum.set_attr_level("num_terms", 0) # 2 terms
curriculum.set_attr_level("value", 2) # Large values
curriculum.set_attr_level("var_name", 0) # Basic variables
problem = exercise.generate(curriculum)
print("\nSimple Equation with Large Values:")
print(problem)
if __name__ == "__main__":
main()