Run Details #588
Model
Claude Haiku 4.5
Score
0
Stored run score 92 recalculated to 0 after question exclusions.
Correct (≥100)
0/1
Incorrect (<100)
1
Median Time
2083.0ms
Tokens Used
565
Cost
$0.0014
Benchmark:
0304_python_coin_change
Run Date: 2026-03-02 18:00:55
Coding question results (1)
0304_python_coin_change:0
Incorrect
Score: 92 • 2083ms • 565 tokens • $0.0014
Question: Write Python 3.12 code only.
Define exactly one function named min_coins_for_amount(amount, coins).
Return the minimum number of coins needed to make the amount exactly.
If exact change is impossible, raise ValueError.
Raise TypeError for invalid input types.
Do not use any imports (no numpy, requests, or other libraries).
Sandbox note: dunder attribute access is blocked (for example, type(x).__name__). Avoid names/attributes starting with '__'.
Expected output format:
- Return exactly one fenced Markdown code block starting with ```python and ending with ```.
- Put only valid Python code inside that block (no prose before/after).
- Use 4 spaces for indentation (not tabs).
- Do not return JSON and do not wrap code in a "function" key.
Sample input/output behavior:
- min_coins_for_amount(44, [1, 4, 22]) -> 2
Task:
Write a Python 3.12 function for making change with the fewest coins (e.g., 78c with 1c, 4c, 22c).
Submitted code
```python
def min_coins_for_amount(amount, coins):
# Type validation
if not isinstance(amount, int) or not isinstance(coins, list):
raise TypeError("amount must be an int and coins must be a list")
if amount < 0:
raise TypeError("amount must be non-negative")
for coin in coins:
if not isinstance(coin, int) or coin <= 0:
raise TypeError("all coins must be positive integers")
# Handle edge case
if amount == 0:
return 0
# Dynamic programming approach
# dp[i] will store the minimum number of coins needed to make amount i
dp = [float('inf')] * (amount + 1)
dp[0] = 0
# Fill the dp table
for i in range(1, amount + 1):
for coin in coins:
if coin <= i:
dp[i] = min(dp[i], dp[i - coin] + 1)
# If dp[amount] is still infinity, exact change is impossible
if dp[amount] == float('inf'):
raise ValueError("exact change is impossible")
return dp[amount]
```
Test case results
| # | Status | Args | Expected | Actual | Error |
|---|---|---|---|---|---|
| 0 | Pass | [78, [1, 4, 22]] |
6 |
6 |
- |
| 1 | Pass | [0, [1, 4, 22]] |
0 |
0 |
- |
| 2 | Pass | [8, [1, 4, 22]] |
2 |
2 |
- |
| 3 | Pass | [44, [1, 4, 22]] |
2 |
2 |
- |
| 4 | Pass | [23, [1, 4, 22]] |
2 |
2 |
- |
| 5 | Pass | [7, [2, 4]] |
ValueError |
ValueError |
- |
| 6 | Pass | [11, [5, 6]] |
2 |
2 |
- |
| 7 | Pass | [10, [1, 5, 7]] |
2 |
2 |
- |
| 8 | Pass | [24, [1, 5, 7]] |
4 |
4 |
- |
| 9 | Pass | [3, [2]] |
ValueError |
ValueError |
- |
| 10 | Pass | [10, '124'] |
TypeError |
TypeError |
- |
| 11 | Fail | [-1, [1, 2]] |
ValueError |
TypeError |
amount must be non-negative |