Run Details #688

Score

100

Correct (≥100)

1/1

Incorrect (<100)

0

Median Time

25978.0ms

Tokens Used

601

Cost

$0.0013

Run Date: 2026-03-02 23:44:14
Coding question results (1)
0304_python_coin_change:0 Correct
Score: 100 • 25978ms • 601 tokens • $0.0013
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
def min_coins_for_amount(amount, coins):
    """
    Calculates the minimum number of coins needed to make a given amount.

    Args:
        amount (int): The target amount to make change for.
        coins (list[int]): A list of available coin denominations.

    Returns:
        int: The minimum number of coins needed to make the amount exactly.

    Raises:
        TypeError: If either input is not of the correct type.
        ValueError: If it's impossible to make exact change for the given amount and coins.
    """

    if not isinstance(amount, int):
        raise TypeError("Amount must be an integer.")

    if not isinstance(coins, list):
        raise TypeError("Coins must be a list.")

    if not all(isinstance(coin, int) for coin in coins):
        raise TypeError("All elements in the coins list must be integers.")

    if amount < 0:
        raise ValueError("Amount cannot be negative.")

    if amount == 0:
        return 0

    dp = [float('inf')] * (amount + 1)
    dp[0] = 0

    for coin in coins:
        for i in range(coin, amount + 1):
            dp[i] = min(dp[i], dp[i - coin] + 1)

    if dp[amount] == float('inf'):
        raise ValueError("Cannot make exact change for the given amount and coins.")

    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 Pass [-1, [1, 2]] ValueError ValueError -