Sample size lookup
Your task
Your experimentation platform sizes tests from a precomputed lookup table instead of a stats library. Each table row is [min_baseline_bps, max_baseline_bps, min_mde_bps, sample_size]: the row applies when the baseline conversion rate satisfies min_baseline_bps <= baseline_bps <= max_baseline_bps and the effect you want to detect satisfies mde_bps >= min_mde_bps. Given the table plus the experiment's baseline_bps and mde_bps, return the smallest sample_size among all applicable rows, or -1 when no row applies. Example: table = [[100, 500, 100, 20000], [100, 500, 200, 8000], [501, 1000, 100, 12000]], baseline_bps = 300, mde_bps = 250 returns 8000.
Examples
required_sample(table: list[list[int]], baseline_bps: int, mde_bps: int) -> intExample 1
Input
required_sample([[100, 500, 100, 20000], [100, 500, 200, 8000], [501, 1000, 100, 12000]], 300, 250)Output
8000