mirror of
https://github.com/open-thought/reasoning-gym.git
synced 2026-04-19 12:58:07 +00:00
* [fix] resolve basic_arithmetic fails when size is large by replacing zero divisor with 1
This commit is contained in:
parent
bf451d5197
commit
2d19f13e0f
2 changed files with 19 additions and 0 deletions
|
|
@ -191,6 +191,9 @@ class BasicArithmeticDataset(ProceduralDataset):
|
|||
space_parts.append(" ")
|
||||
space_parts.append(p)
|
||||
expression = "".join(space_parts).strip()
|
||||
# Avoid division-by-zero in final evaluation by converting '/0' patterns to '/1'
|
||||
if "/ 0" in expression:
|
||||
expression = expression.replace("/ 0", "/ 1")
|
||||
result = eval_floordiv(expression) # Note: eval is safe here as we control the input
|
||||
|
||||
return expression, result
|
||||
|
|
|
|||
|
|
@ -168,3 +168,19 @@ def test_basic_arithmetic_curriculum_upper_bound():
|
|||
increased_cfg = curriculum.generate_configuration(base_value)
|
||||
assert increased_cfg.min_terms == 2 and increased_cfg.max_terms == 3
|
||||
assert increased_cfg.min_digits == 1 and increased_cfg.max_digits == 2
|
||||
|
||||
|
||||
def test_arithmetic_dataset_large_random_generation():
|
||||
"""Stress-test generation of many arithmetic questions to catch random errors"""
|
||||
config = BasicArithmeticDatasetConfig(
|
||||
size=100000,
|
||||
seed=123,
|
||||
min_terms=2,
|
||||
max_terms=6,
|
||||
min_digits=1,
|
||||
max_digits=3,
|
||||
)
|
||||
dataset = BasicArithmeticDataset(config)
|
||||
for item in dataset:
|
||||
assert isinstance(item, dict)
|
||||
assert "question" in item and "answer" in item and "metadata" in item
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue