mirror of
https://github.com/open-thought/reasoning-gym.git
synced 2026-04-25 17:10:51 +00:00
Refactor SimpleEquations
This commit is contained in:
parent
b3e61988c1
commit
7dce30324b
6 changed files with 789 additions and 201 deletions
99
examples/exercises/algebra/simple_equations_examples.py
Normal file
99
examples/exercises/algebra/simple_equations_examples.py
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
"""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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue