Question
Given a source string and a target string, represent the target as the fewest contiguous substrings copied from the source. Return the inclusive source range used for each target piece, in target order.
```python
def min_partitions(source: str, target: str) -> list: ...
def min_partitions_after_delete(source: str, target: str, index: int) -> list: ...
```
## Assumptions
Ranges are zero-based and inclusive. If the target cannot be covered, return `[]`; an empty target also returns `[]`. Among solutions with the fewest pieces, prefer the longest possible next piece, then the leftmost matching source range.
For example, `min_partitions("abcdbcd", "dabcd")` returns `[[3,3], [0,3]]`.
`min_partitions_after_delete` removes `target[index]` and solves the same problem; the index must be an integer (not a boolean) from zero through `len(target)-1`. Invalid indices raise `IndexError`. The supplied `run_case` dispatches public fixtures; implement the two algorithm functions, not this adapter.
## Requirements
- Reusing a source range is allowed.
- Avoid enumerating every possible partition when inputs are large.
- State time and space complexity and justify the tie-breaking behavior.
## Follow-ups
1. Preprocess one source for many targets.
2. Return the number of optimal representations.
3. Support Unicode code points and normalization.
4. Determine the best answer after every possible one-character deletion.