← run

he-014

1.000
1/1 tests· basic
Challenge · difficulty 2/5
# HumanEval/14

Implement a file **`solution.py`** that completes the function below. Keep the given name and signature; your file must define it at module level.

```python
from typing import List


def all_prefixes(string: str) -> List[str]:
    """ Return list of all prefixes from shortest to longest of the input string
    >>> all_prefixes('abc')
    ['a', 'ab', 'abc']
    """
```

<!-- imported from OpenAI HumanEval (HumanEval/14) -->
tests/test_he_014.py
# Auto-generated from OpenAI HumanEval HumanEval/14. Do not edit by hand.
from solution import *  # noqa: F401,F403 (prompt helpers may be referenced by tests)
from solution import all_prefixes as candidate

METADATA = {
    'author': 'jt',
    'dataset': 'test'
}


def check(candidate):
    assert candidate('') == []
    assert candidate('asdfgh') == ['a', 'as', 'asd', 'asdf', 'asdfg', 'asdfgh']
    assert candidate('WWW') == ['W', 'WW', 'WWW']


def test_he_014():
    check(candidate)
System prompt
You are an expert programmer. Solve the task exactly as specified. Output your solution as fenced code blocks using the required file name(s) and the exact function/type signatures requested. Prefer correctness; do not include prose outside code unless asked.
Proposed solution
```python
from typing import List


def all_prefixes(string: str) -> List[str]:
    """ Return list of all prefixes from shortest to longest of the input string
    >>> all_prefixes('abc')
    ['a', 'ab', 'abc']
    """
    return [string[:i] for i in range(1, len(string) + 1)]
```

Test output (stdout)

.                                                                        [100%]
1 passed in 0.01s
Reasoning (chain-of-thought)
The task is to implement a function `all_prefixes` that returns all prefixes of a given string, from shortest to longest.

For example:
- `all_prefixes('abc')` should return `['a', 'ab', 'abc']`

The approach is straightforward:
1. Iterate through the string from index 0 to len(string)
2. For each index i, take the substring from 0 to i (exclusive)
3. Collect all these substrings in a list

Let me write the solution:

```python
from typing import List


def all_prefixes(string: str) -> List[str]:
    """ Return list of all prefixes from shortest to longest of the input string
    >>> all_prefixes('abc')
    ['a', 'ab', 'abc']
    """
    return [string[:i] for i in range(1, len(string) + 1)]
```

Wait, let me verify this:
- For 'abc' with len=3:
  - i=1: string[:1] = 'a'
  - i=2: string[:2] = 'ab'
  - i=3: string[:3] = 'abc'
  
This gives ['a', 'ab', 'abc'] which matches the expected output.

Actually, I should also consider the edge case of an empty string:
- For '' with len=0:
  - range(1, 1) is empty, so we get []
  
This seems correct - an empty string has no prefixes.

Let me finalize the solution.