merge_intervals gives wrong results
Done- Plan (done)
- Code (done)
- Test (done)
- Review (done)
- Finish (done)
Cost
$0.0035
Tests
Passed
Iterations
1
Re-plans
0
LLM calls
10
Prompt read from cache
75%
Usage by agent
- Cache read
- Cache write
- Input
- Output
View as table
| Agent | Cost | Cache read | Cache write | Input | Output |
|---|---|---|---|---|---|
| planner | $0.0008 | 5,802 | 944 | 8 | 1,255 |
| coder | $0.0008 | 9,166 | 2,234 | 8 | 953 |
| tester | $0.0012 | 10,666 | 3,389 | 8 | 1,427 |
| reviewer | $0.0006 | 1,727 | 2,304 | 4 | 663 |
Timeline
-
planner iteration 1 Finished 3 calls · 8,009 tokens · $0.0008 · 7.6s
Loading…
-
coder iteration 1 Finished 3 calls · 12.4K tokens · $0.0008 · 5.8s
Loading…
-
tester iteration 1 Finished 3 calls · 15.5K tokens · $0.0012 · 11.3s
Loading…
-
verify iteration 1 Passed 0.6s
.............. [100%] 14 passed in 0.03s
-
reviewer iteration 1 Finished 1 calls · 4,698 tokens · $0.0006 · 4.4s
Loading…
Final diff
diff --git a/intervals.py b/intervals.py index 76e6d7f..2bafff4 100644 --- a/intervals.py +++ b/intervals.py @@ -1,8 +1,8 @@ def merge_intervals(intervals: list[tuple[int, int]]) -> list[tuple[int, int]]: merged: list[tuple[int, int]] = [] - for start, end in intervals: - if merged and start < merged[-1][1]: - merged[-1] = (merged[-1][0], end) + for start, end in sorted(intervals): + if merged and start <= merged[-1][1]: + merged[-1] = (merged[-1][0], max(merged[-1][1], end)) else: merged.append((start, end)) return merged diff --git a/test_intervals.py b/test_intervals.py index 1e6a250..fa32ed3 100644 --- a/test_intervals.py +++ b/test_intervals.py @@ -7,3 +7,53 @@ def test_overlap(): def test_separate(): assert merge_intervals([(1, 2), (3, 4)]) == [(1, 2), (3, 4)] + + +def test_touching(): + assert merge_intervals([(1, 2), (2, 3)]) == [(1, 3)] + + +def test_unsorted(): + assert merge_intervals([(5, 6), (1, 2)]) == [(1, 2), (5, 6)] + + +def test_containment(): + assert merge_intervals([(1, 10), (2, 3)]) == [(1, 10)] + + +def test_empty(): + assert merge_intervals([]) == [] + + +def test_single(): + assert merge_intervals([(1, 2)]) == [(1, 2)] + + +def test_unsorted_containment(): + assert merge_intervals([(2, 3), (1, 10)]) == [(1, 10)] + + +def test_chain_of_touching(): + assert merge_intervals([(3, 4), (1, 2), (2, 3)]) == [(1, 4)] + + +def test_duplicates(): + assert merge_intervals([(1, 2), (1, 2)]) == [(1, 2)] + + +def test_contained_then_extended(): + assert merge_intervals([(1, 5), (2, 3), (4, 8)]) == [(1, 8)] + + +def test_point_touching_end(): + assert merge_intervals([(1, 2), (2, 2)]) == [(1, 2)] + + +def test_point_separate_unsorted(): + assert merge_intervals([(3, 3), (1, 2)]) == [(1, 2), (3, 3)] + + +def test_input_not_mutated(): + data = [(5, 6), (1, 2)] + merge_intervals(data) + assert data == [(5, 6), (1, 2)]