Refactor Curriculum Attributes (#335)

* remove min_value from AttributeDefinition
* remove type from AttributeDefinition
* Add CurriculumContext
* add ensure_interval option for RangeAttributes
* docs: Add legend explaining curriculum indicators in dataset gallery
* update GALLERY.md
This commit is contained in:
Andreas Köpf 2025-03-16 15:40:28 +01:00 committed by GitHub
parent 4e7d9296ee
commit d2c895f1d3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
101 changed files with 286 additions and 677 deletions

View file

@ -10,7 +10,7 @@ from dataclasses import dataclass
from random import Random
from typing import Optional
from ..coaching import AttributeType, BaseCurriculum, RangeAttributeDefinition
from ..coaching import BaseCurriculum, RangeAttributeDefinition
from ..factory import ProceduralDataset, register_dataset
QUESTION_TEMPLATE = """There are a total of {num_courses} courses you have to take, labeled from 0 to {last_index}.
@ -152,8 +152,6 @@ class CourseScheduleCurriculum(BaseCurriculum):
levels=[10, 50, 100, 500],
default_level=0, # Start with 5 courses
description="Number of courses in the schedule",
attr_type=AttributeType.APPEND,
min_value=3, # Ensure at least 3 courses
lower_field_name="min_num_courses",
upper_field_name="max_num_courses",
),
@ -162,8 +160,6 @@ class CourseScheduleCurriculum(BaseCurriculum):
levels=[2, 3, 4, 5],
default_level=0, # Start with 2 prerequisites max
description="Number of prerequisites per course",
attr_type=AttributeType.APPEND,
min_value=0,
lower_field_name="min_num_prerequisites",
upper_field_name="max_num_prerequisites",
),
@ -172,8 +168,6 @@ class CourseScheduleCurriculum(BaseCurriculum):
levels=[3, 4, 5, 6],
default_level=0, # Start with 3 cycle length
description="Length of a cycle in the prerequisites",
attr_type=AttributeType.APPEND,
min_value=3,
lower_field_name="min_cycle_length",
upper_field_name="max_cycle_length",
),

View file

@ -4,7 +4,7 @@ from enum import StrEnum
from itertools import count
from typing import Any, Optional
from ..coaching import AttributeType, BaseCurriculum, RangeAttributeDefinition
from ..coaching import BaseCurriculum, RangeAttributeDefinition
from ..factory import ProceduralDataset, register_dataset
@ -379,9 +379,6 @@ class FamilyRelationshipsCurriculum(BaseCurriculum):
RangeAttributeDefinition(
name="family_size",
description="The size of the family",
min_value=3,
attr_type=AttributeType.APPEND,
default_level=0,
levels=list(range(3, 12)),
lower_field_name="min_family_size",
upper_field_name="max_family_size",

View file

@ -9,7 +9,7 @@ from dataclasses import dataclass
from random import Random
from typing import Optional
from ..coaching import AttributeType, BaseCurriculum, RangeAttributeDefinition
from ..coaching import BaseCurriculum, RangeAttributeDefinition
from ..factory import ProceduralDataset, register_dataset
QUESTION_TEMPLATE = """You are given the following {rows} x {cols} binary matrix grid:
@ -159,40 +159,28 @@ class LargestIslandCurriculum(BaseCurriculum):
RangeAttributeDefinition(
name="rows",
levels=[5, 10, 50, 100],
default_level=0,
description="Number of rows in the grid",
attr_type=AttributeType.APPEND,
min_value=1,
lower_field_name="min_rows",
upper_field_name="max_rows",
),
RangeAttributeDefinition(
name="cols",
levels=[5, 10, 50, 100],
default_level=0,
description="Number of columns in the grid",
attr_type=AttributeType.APPEND,
min_value=1,
lower_field_name="min_cols",
upper_field_name="max_cols",
),
RangeAttributeDefinition(
name="num_islands",
levels=[2, 5, 10, 20],
default_level=0,
description="Number of islands in the grid",
attr_type=AttributeType.APPEND,
min_value=0,
lower_field_name="min_num_islands",
upper_field_name="max_num_islands",
),
RangeAttributeDefinition(
name="island_size",
levels=[5, 10, 20, 30],
default_level=0,
description="Size of the islands in the grid",
attr_type=AttributeType.APPEND,
min_value=0,
lower_field_name="min_island_size",
upper_field_name="max_island_size",
),

View file

@ -4,7 +4,7 @@ from dataclasses import dataclass
from random import Random
from typing import Any, Optional
from ..coaching import AttributeType, BaseCurriculum, ScalarAttributeDefinition
from ..coaching import BaseCurriculum, ScalarAttributeDefinition
from ..factory import ProceduralDataset, register_dataset
@ -243,10 +243,7 @@ class QuantumLockCurriculum(BaseCurriculum):
name="difficulty",
field_name="difficulty",
levels=list(range(1, 11)),
default_level=0,
attr_type=AttributeType.STATIC,
description="The difficulty of the puzzle",
min_value=1,
)
)

View file

@ -5,7 +5,7 @@ from dataclasses import dataclass
from random import Random
from typing import Any, Optional
from ..coaching import AttributeType, BaseCurriculum, RangeAttributeDefinition
from ..coaching import BaseCurriculum, RangeAttributeDefinition
from ..factory import ProceduralDataset, register_dataset
QUESTION_TEMPLATE = """Your task is to find the shortest path from the start to the destination point in a grid.
@ -178,20 +178,14 @@ class ShortestPathCurriculum(BaseCurriculum):
RangeAttributeDefinition(
name="rows",
levels=[10, 25, 50, 100],
default_level=0,
description="Number of rows in the grid",
attr_type=AttributeType.APPEND,
min_value=2,
lower_field_name="min_rows",
upper_field_name="max_rows",
),
RangeAttributeDefinition(
name="cols",
levels=[10, 25, 50, 100],
default_level=0,
description="Number of columns in the grid",
attr_type=AttributeType.APPEND,
min_value=2,
lower_field_name="min_cols",
upper_field_name="max_cols",
),