Skip to content

Latest commit

 

History

History
310 lines (308 loc) · 9.17 KB

108.md

File metadata and controls

310 lines (308 loc) · 9.17 KB

Results of GPT-4 on HumanEval/108

Date: 18 July, 2023
Model: gpt-4
Temperature: 0.2
Passing runs: 1
Total runs: 10
Success rate: 10%

Prompt

Tokens: 150

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """

The above is an incomplete Python code fragment. Return the complete and correct code with no additional text.

Correct solution

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """def digits_sum(n):
        neg = 1
        if n < 0: n, neg = -1 * n, -1 
        n = [int(i) for i in str(n)]
        n[0] = n[0] * neg
        return sum(n)
    return len(list(filter(lambda x: x > 0, [digits_sum(i) for i in arr])))

Unit tests

def check(candidate):

    # Check some simple cases
    assert candidate([]) == 0
    assert candidate([-1, -2, 0]) == 0
    assert candidate([1, 1, 2, -2, 3, 4, 5]) == 6
    assert candidate([1, 6, 9, -6, 0, 1, 5]) == 5
    assert candidate([1, 100, 98, -7, 1, -1]) == 4
    assert candidate([12, 23, 34, -45, -56, 0]) == 5
    assert candidate([-0, 1**0]) == 1
    assert candidate([1]) == 1

    # Check some edge cases that are easy to work out by hand.
    assert True, "This prints if this assert fails 2 (also good for debugging!)"

Runs

❌ Run 1

Start time: 2023-07-18 18:12:02
Duration: 19.66s
Completion tokens: 184
Result: Fail

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = num * -1
        sum_of_digits = sum(int(digit) for digit in str(num))
        if sum_of_digits > 0:
            count += 1
    return count

❌ Run 2

Start time: 2023-07-18 18:11:47
Duration: 14.53s
Completion tokens: 182
Result: Fail

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = -1 * (int(str(num)[1:]))
        if sum(int(digit) for digit in str(num)) > 0:
            count += 1
    return count

❌ Run 3

Start time: 2023-07-18 18:11:31
Duration: 16.61s
Completion tokens: 184
Result: Fail

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = num * -1
        sum_of_digits = sum(int(digit) for digit in str(num))
        if sum_of_digits > 0:
            count += 1
    return count

❌ Run 4

Start time: 2023-07-18 18:11:15
Duration: 15.49s
Completion tokens: 184
Result: Fail

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = -1 * num
        sum_of_digits = sum(int(digit) for digit in str(num))
        if sum_of_digits > 0:
            count += 1
    return count

✅ Run 5

Start time: 2023-07-18 18:10:58
Duration: 16.66s
Completion tokens: 208
Result: Pass

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = str(num)[1:]
            sum_digits = -int(num[0]) + sum(int(digit) for digit in num[1:])
        else:
            sum_digits = sum(int(digit) for digit in str(num))
        if sum_digits > 0:
            count += 1
    return count

❌ Run 6

Start time: 2023-07-18 18:10:41
Duration: 17.52s
Completion tokens: 182
Result: Fail

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = -1 * num
        sum_digits = sum(int(digit) for digit in str(num))
        if sum_digits > 0:
            count += 1
    return count

❌ Run 7

Start time: 2023-07-18 18:10:22
Duration: 18.92s
Completion tokens: 182
Result: Fail

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = num * -1
        sum_digits = sum(int(digit) for digit in str(num))
        if sum_digits > 0:
            count += 1
    return count

❌ Run 8

Start time: 2023-07-18 18:10:07
Duration: 14.8s
Completion tokens: 184
Result: Fail

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = -1 * num
        sum_of_digits = sum(int(digit) for digit in str(num))
        if sum_of_digits > 0:
            count += 1
    return count

❌ Run 9

Start time: 2023-07-18 18:09:52
Duration: 14.65s
Completion tokens: 184
Result: Fail

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = -1 * num
        sum_of_digits = sum(int(digit) for digit in str(num))
        if sum_of_digits > 0:
            count += 1
    return count

❌ Run 10

Start time: 2023-07-18 18:09:38
Duration: 14.37s
Completion tokens: 184
Result: Fail

def count_nums(arr):
    """
    Write a function count_nums which takes an array of integers and returns
    the number of elements which has a sum of digits > 0.
    If a number is negative, then its first signed digit will be negative:
    e.g. -123 has signed digits -1, 2, and 3.
    >>> count_nums([]) == 0
    >>> count_nums([-1, 11, -11]) == 1
    >>> count_nums([1, 1, 2]) == 3
    """
    count = 0
    for num in arr:
        if num < 0:
            num = num * -1
        sum_of_digits = sum(int(digit) for digit in str(num))
        if sum_of_digits > 0:
            count += 1
    return count