How to guarantee the problem is valid?
Author: Aochong-LiCreated Jun 2, 2025Updated Dec 2, 2025
looking at the code in examples/data_preprocess/countdown.py, it seems this is the function used for generating (target, tuples) pairs for countdown problems. But, if target and tuples are sampled randomly independently, how do you guarantee that there is always a solution?
"""
Preprocess dataset for countdown task - given a target number and N numbers, generate equations to reach target
"""
import re
import os
from datasets import Dataset, load_dataset
from random import randint, seed, choice
from typing import List, Tuple
from tqdm import tqdm
from verl.utils.hdfs_io import copy, makedirs
import argparse
def gen_dataset(
num_samples: int,
num_operands: int = 6,
max_target: int = 1000,
min_number: int = 1,
max_number: int = 100,
operations: List[str] = ['+', '-', '*', '/'],
seed_value: int = 42,
) -> List[Tuple]:
"""Generate dataset for countdown task.
Args:
num_samples: Number of samples to generate
num_operands: Number of numbers provided in each sample
max_target: Maximum value for target number
min_number: Minimum value for provided numbers
max_number: Maximum value for provided numbers
operations: List of allowed operations
seed_value: Random seed for reproducibility
Returns:
List of tuples containing (target, numbers, solution)
"""
seed(seed_value)
samples = []
for _ in tqdm(range(num_samples)):
# Generate random target
target = randint(1, max_target)
# Generate random numbers
numbers = [randint(min_number, max_number) for _ in range(num_operands)]
samples.append((target, numbers))
return samplesSource: Jiayi-Pan/TinyZero