diff --git a/reasoning_gym/algebra/complex_advanced.py b/reasoning_gym/algebra/complex_advanced.py index 3088bdea..faeefd66 100644 --- a/reasoning_gym/algebra/complex_advanced.py +++ b/reasoning_gym/algebra/complex_advanced.py @@ -232,13 +232,17 @@ class ComplexAdvancedDataset(ProceduralDataset): o_parts = [s.strip() for s in oracle.split(",")] if len(a_parts) < 2 or len(o_parts) < 2: return 0.0 - a_vals = [self._parse_complex(a_parts[0] + ("" if "i" in a_parts[0] else "") ), - self._parse_complex(a_parts[1] + ("" if "i" in a_parts[1] else ""))] + a_vals = [ + self._parse_complex(a_parts[0] + ("" if "i" in a_parts[0] else "")), + self._parse_complex(a_parts[1] + ("" if "i" in a_parts[1] else "")), + ] o_vals = [self._parse_complex(o_parts[0]), self._parse_complex(o_parts[1])] if any(v is None for v in a_vals + o_vals): return 0.0 - d1 = min(abs(a_vals[0] - o_vals[0]) + abs(a_vals[1] - o_vals[1]), - abs(a_vals[0] - o_vals[1]) + abs(a_vals[1] - o_vals[0])) + d1 = min( + abs(a_vals[0] - o_vals[0]) + abs(a_vals[1] - o_vals[1]), + abs(a_vals[0] - o_vals[1]) + abs(a_vals[1] - o_vals[0]), + ) return min(1.0, math.exp(-d1)) @staticmethod diff --git a/reasoning_gym/algebra/limits.py b/reasoning_gym/algebra/limits.py index d8fdc421..eff56945 100644 --- a/reasoning_gym/algebra/limits.py +++ b/reasoning_gym/algebra/limits.py @@ -121,13 +121,10 @@ class LimitsDataset(ProceduralDataset): if coeffs[-1] == 0: coeffs[-1] = 1 - val = sum(coeffs[i] * (a ** i) for i in range(len(coeffs))) + val = sum(coeffs[i] * (a**i) for i in range(len(coeffs))) answer = str(val) poly = _poly_str(coeffs) - question = ( - f"Find the limit as x approaches {a} of ({poly}). " - f"Give your answer as a single integer." - ) + question = f"Find the limit as x approaches {a} of ({poly}). " f"Give your answer as a single integer." return {"question": question, "answer": answer, "task_type": "direct_sub"} def _make_squeeze(self, rng: random.Random) -> dict: diff --git a/reasoning_gym/algebra/linear_algebra.py b/reasoning_gym/algebra/linear_algebra.py index 8ca9e5b6..b556f532 100644 --- a/reasoning_gym/algebra/linear_algebra.py +++ b/reasoning_gym/algebra/linear_algebra.py @@ -69,10 +69,7 @@ class LinearAlgebraDataset(ProceduralDataset): super().__init__(config=config, seed=config.seed, size=config.size) def _gen_matrix(self, rng: random.Random, rows: int, cols: int) -> list[list[int]]: - return [ - [rng.randint(self.config.min_value, self.config.max_value) for _ in range(cols)] - for _ in range(rows) - ] + return [[rng.randint(self.config.min_value, self.config.max_value) for _ in range(cols)] for _ in range(rows)] def _make_matrix_multiply(self, rng: random.Random) -> dict: n = rng.randint(self.config.min_dim, self.config.max_dim) @@ -91,10 +88,7 @@ class LinearAlgebraDataset(ProceduralDataset): n = rng.randint(self.config.min_dim, min(self.config.max_dim, 3)) m = self._gen_matrix(rng, n, n) result = _det(m) - question = ( - f"Find the determinant of the matrix {_mat_str(m)}. " - f"Give your answer as a single integer." - ) + question = f"Find the determinant of the matrix {_mat_str(m)}. " f"Give your answer as a single integer." return {"question": question, "answer": str(result), "task_type": "determinant"} def _make_inverse(self, rng: random.Random) -> dict: diff --git a/reasoning_gym/combinatorics/combinatorics.py b/reasoning_gym/combinatorics/combinatorics.py index 655dbb57..0345bb59 100644 --- a/reasoning_gym/combinatorics/combinatorics.py +++ b/reasoning_gym/combinatorics/combinatorics.py @@ -16,9 +16,7 @@ class CombinatoricsConfig: min_n: int = 5 max_n: int = 15 task_types: tuple[str, ...] = TASK_TYPES - task_weights: list[float] = field( - default_factory=lambda: [0.2, 0.15, 0.2, 0.2, 0.15, 0.1] - ) + task_weights: list[float] = field(default_factory=lambda: [0.2, 0.15, 0.2, 0.2, 0.15, 0.1]) seed: Optional[int] = None size: int = 500 @@ -40,8 +38,7 @@ class CombinatoricsDataset(ProceduralDataset): k = rng.randint(1, n - 1) answer = math.comb(n, k) question = ( - f"How many ways can you choose {k} items from a set of {n} items? " - f"Give your answer as a single integer." + f"How many ways can you choose {k} items from a set of {n} items? " f"Give your answer as a single integer." ) return {"question": question, "answer": str(answer), "task_type": "ncr"} diff --git a/reasoning_gym/logic/set_operations.py b/reasoning_gym/logic/set_operations.py index 999ebccf..779d7e02 100644 --- a/reasoning_gym/logic/set_operations.py +++ b/reasoning_gym/logic/set_operations.py @@ -7,7 +7,16 @@ from ..factory import ProceduralDataset, register_dataset DATASET_NAME = "set_operations" -TASK_TYPES = ("union", "intersection", "difference", "symmetric_difference", "cardinality", "power_set_size", "complement", "chained") +TASK_TYPES = ( + "union", + "intersection", + "difference", + "symmetric_difference", + "cardinality", + "power_set_size", + "complement", + "chained", +) @dataclass @@ -80,7 +89,7 @@ class SetOperationsDataset(ProceduralDataset): def _make_power_set_size(self, rng: random.Random) -> dict: n = rng.randint(2, 8) - answer = 2 ** n + answer = 2**n question = f"How many subsets does a set with {n} elements have? Give your answer as a single integer." return {"question": question, "answer": str(answer), "task_type": "power_set_size"} @@ -112,8 +121,7 @@ class SetOperationsDataset(ProceduralDataset): result = intermediate & c question = ( - f"Given A = {_fmt_set(a)}, B = {_fmt_set(b)}, C = {_fmt_set(c)}, " - f"find (A {op1_sym} B) {op2_sym} C." + f"Given A = {_fmt_set(a)}, B = {_fmt_set(b)}, C = {_fmt_set(c)}, " f"find (A {op1_sym} B) {op2_sym} C." ) return {"question": question, "answer": _fmt_set(result), "task_type": "chained"} diff --git a/tests/test_combinatorics.py b/tests/test_combinatorics.py index bceec974..e25d99b0 100644 --- a/tests/test_combinatorics.py +++ b/tests/test_combinatorics.py @@ -67,9 +67,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("ncr", "npr", "permutations_repetition", "inclusion_exclusion", "stars_and_bars", "pigeonhole"): - config = CombinatoricsConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = CombinatoricsConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = CombinatoricsDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_complex_advanced.py b/tests/test_complex_advanced.py index 67010c74..7d47bd5b 100644 --- a/tests/test_complex_advanced.py +++ b/tests/test_complex_advanced.py @@ -76,9 +76,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("polar", "euler", "inverse", "sqrt", "quadratic"): - config = ComplexAdvancedConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = ComplexAdvancedConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = ComplexAdvancedDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_conditional_probability.py b/tests/test_conditional_probability.py index d08ecb1a..7c14fe2e 100644 --- a/tests/test_conditional_probability.py +++ b/tests/test_conditional_probability.py @@ -68,9 +68,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("bayes", "dependent_draws", "contingency_table"): - config = ConditionalProbabilityConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = ConditionalProbabilityConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = ConditionalProbabilityDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_descriptive_stats.py b/tests/test_descriptive_stats.py index bfe2793c..7ee8a269 100644 --- a/tests/test_descriptive_stats.py +++ b/tests/test_descriptive_stats.py @@ -67,9 +67,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("mean", "median", "mode", "weighted_mean", "std_dev", "percentile", "z_score"): - config = DescriptiveStatsConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = DescriptiveStatsConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = DescriptiveStatsDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_dynamic_programming.py b/tests/test_dynamic_programming.py index 90d9918a..9fd5e628 100644 --- a/tests/test_dynamic_programming.py +++ b/tests/test_dynamic_programming.py @@ -68,9 +68,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("lcs", "coin_change", "lis", "edit_distance", "staircase"): - config = DynamicProgrammingConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = DynamicProgrammingConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = DynamicProgrammingDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_job_scheduling.py b/tests/test_job_scheduling.py index 3114cf81..6077a846 100644 --- a/tests/test_job_scheduling.py +++ b/tests/test_job_scheduling.py @@ -47,9 +47,7 @@ def test_answer_correctness(): def test_task_ordering_verification(): - config = JobSchedulingConfig( - seed=42, size=20, task_types=("task_ordering",), task_weights=[1.0] - ) + config = JobSchedulingConfig(seed=42, size=20, task_types=("task_ordering",), task_weights=[1.0]) ds = JobSchedulingDataset(config) for i in range(len(ds)): item = ds[i] @@ -81,9 +79,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("critical_path", "interval_scheduling", "task_ordering"): - config = JobSchedulingConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = JobSchedulingConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = JobSchedulingDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_limits.py b/tests/test_limits.py index cf3bdfd9..47bbb8cb 100644 --- a/tests/test_limits.py +++ b/tests/test_limits.py @@ -67,9 +67,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("polynomial_cancel", "rational_infinity", "direct_sub", "squeeze"): - config = LimitsConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = LimitsConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = LimitsDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_linear_algebra.py b/tests/test_linear_algebra.py index bb428b80..c8912af9 100644 --- a/tests/test_linear_algebra.py +++ b/tests/test_linear_algebra.py @@ -47,9 +47,7 @@ def test_answer_correctness(): def test_solve_system_verification(): - config = LinearAlgebraConfig( - seed=42, size=20, task_types=("solve_system",), task_weights=[1.0] - ) + config = LinearAlgebraConfig(seed=42, size=20, task_types=("solve_system",), task_weights=[1.0]) ds = LinearAlgebraDataset(config) for i in range(len(ds)): item = ds[i] @@ -78,9 +76,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("matrix_multiply", "determinant", "inverse", "solve_system", "eigenvalues"): - config = LinearAlgebraConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = LinearAlgebraConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = LinearAlgebraDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_number_theory.py b/tests/test_number_theory.py index bfddc476..d10bb5b3 100644 --- a/tests/test_number_theory.py +++ b/tests/test_number_theory.py @@ -47,9 +47,7 @@ def test_answer_correctness(): def test_diophantine_verification(): - config = NumberTheoryConfig( - seed=42, size=20, task_types=("diophantine",), task_weights=[1.0] - ) + config = NumberTheoryConfig(seed=42, size=20, task_types=("diophantine",), task_weights=[1.0]) ds = NumberTheoryDataset(config) for i in range(len(ds)): item = ds[i] @@ -83,9 +81,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("mod_arith", "mod_exp", "totient", "crt", "mod_inverse", "diophantine"): - config = NumberTheoryConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = NumberTheoryConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = NumberTheoryDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_regex_puzzles.py b/tests/test_regex_puzzles.py index 0f417760..4e071864 100644 --- a/tests/test_regex_puzzles.py +++ b/tests/test_regex_puzzles.py @@ -66,9 +66,7 @@ def test_curriculum(): def test_task_types(): for task_type in ("string_generation", "extraction", "dfa_state", "dfa_prefix"): - config = RegexPuzzlesConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + config = RegexPuzzlesConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = RegexPuzzlesDataset(config) for i in range(len(ds)): item = ds[i] diff --git a/tests/test_set_operations.py b/tests/test_set_operations.py index 1efc9aa1..5b0e1868 100644 --- a/tests/test_set_operations.py +++ b/tests/test_set_operations.py @@ -66,10 +66,17 @@ def test_curriculum(): def test_task_types(): - for task_type in ("union", "intersection", "difference", "symmetric_difference", "cardinality", "power_set_size", "complement", "chained"): - config = SetOperationsConfig( - seed=42, size=10, task_types=(task_type,), task_weights=[1.0] - ) + for task_type in ( + "union", + "intersection", + "difference", + "symmetric_difference", + "cardinality", + "power_set_size", + "complement", + "chained", + ): + config = SetOperationsConfig(seed=42, size=10, task_types=(task_type,), task_weights=[1.0]) ds = SetOperationsDataset(config) for i in range(len(ds)): item = ds[i]