mirror of
https://github.com/open-thought/reasoning-gym.git
synced 2026-04-22 16:49:06 +00:00
99 lines
4 KiB
Python
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()
|