Add Modulo Grid Task (#273)

* add modulo_grid dataset
* ensure the pattern is mathematical, not just spatial

---------

Co-authored-by: Andreas Koepf <andreas.koepf@provisio.com>
This commit is contained in:
Rich Jones 2025-03-07 11:11:41 +01:00 committed by GitHub
parent 07dc01ad87
commit cbfdf097a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 182 additions and 0 deletions

37
tests/test_modulo_grid.py Normal file
View file

@ -0,0 +1,37 @@
import pytest
from reasoning_gym.cognition.modulo_grid import ModuloGridConfig, ModuloGridDataset
def test_modulo_grid():
"""Test basic properties and solution of generated items"""
# Easy
config = ModuloGridConfig(seed=42, size=50, size_x=10, size_y=10, max_divisor=10, max_target=10, max_holes=1)
dataset = ModuloGridDataset(config)
for item in dataset:
assert isinstance(item, dict)
assert "question" in item and isinstance(item["question"], str)
assert "answer" in item and isinstance(item["answer"], str)
assert "metadata" in item
# Test the scoring
assert item["question"] != item["answer"]
assert dataset.score_answer(answer=item["answer"], entry=item) == 1.0
assert dataset.score_answer(answer=None, entry=item) == 0.0
# Hard
config = ModuloGridConfig(seed=42, size=50, size_x=25, size_y=25, max_divisor=25, max_target=25, max_holes=15)
dataset = ModuloGridDataset(config)
for item in dataset:
assert isinstance(item, dict)
assert "question" in item and isinstance(item["question"], str)
assert "answer" in item and isinstance(item["answer"], str)
assert "metadata" in item
# Test the scoring
assert item["question"] != item["answer"]
assert dataset.score_answer(answer=item["answer"], entry=item) == 1.0
assert dataset.score_answer(answer=None, entry=item) == 0.0