Spaces:
Running
Running
| # server/tasks/task_easy.py | |
| # 15 single-bug tasks from real-world domains. | |
| # Each bug is exactly ONE mistake: off-by-one, wrong operator, wrong return, etc. | |
| import random | |
| EASY_TASKS = [ | |
| { | |
| "task_id": "easy_001", | |
| "domain": "data processing", | |
| "instructions": ( | |
| "The function below is supposed to return the average of a list of numbers. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def average(nums): | |
| total = 0 | |
| for n in nums: | |
| total += n | |
| return total / len(nums) + 1 | |
| """, | |
| "fixed_code": """\ | |
| def average(nums): | |
| total = 0 | |
| for n in nums: | |
| total += n | |
| return total / len(nums) | |
| """, | |
| "test_cases": [ | |
| {"input": [2, 4, 6], "expected": 4.0}, | |
| {"input": [1, 1, 1, 1], "expected": 1.0}, | |
| {"input": [10, 20], "expected": 15.0}, | |
| ], | |
| "test_cases_description": "Checks that average([2,4,6])==4.0, average([1,1,1,1])==1.0, average([10,20])==15.0", | |
| }, | |
| { | |
| "task_id": "easy_002", | |
| "domain": "string processing", | |
| "instructions": ( | |
| "The function should count how many words are in a sentence. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def count_words(sentence): | |
| words = sentence.split(' ') | |
| return len(words) - 1 | |
| """, | |
| "fixed_code": """\ | |
| def count_words(sentence): | |
| words = sentence.split() | |
| return len(words) | |
| """, | |
| "test_cases": [ | |
| {"input": "hello world", "expected": 2}, | |
| {"input": "one two three four", "expected": 4}, | |
| {"input": "single", "expected": 1}, | |
| ], | |
| "test_cases_description": "Counts words in a sentence correctly", | |
| }, | |
| { | |
| "task_id": "easy_003", | |
| "domain": "data processing", | |
| "instructions": ( | |
| "The function should return the maximum value in a list. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def find_max(nums): | |
| max_val = nums[0] | |
| for i in range(1, len(nums) + 1): | |
| if nums[i] > max_val: | |
| max_val = nums[i] | |
| return max_val | |
| """, | |
| "fixed_code": """\ | |
| def find_max(nums): | |
| max_val = nums[0] | |
| for i in range(1, len(nums)): | |
| if nums[i] > max_val: | |
| max_val = nums[i] | |
| return max_val | |
| """, | |
| "test_cases": [ | |
| {"input": [3, 1, 4, 1, 5, 9], "expected": 9}, | |
| {"input": [10, 2, 8], "expected": 10}, | |
| {"input": [7], "expected": 7}, | |
| ], | |
| "test_cases_description": "Finds max value in a list without IndexError", | |
| }, | |
| { | |
| "task_id": "easy_004", | |
| "domain": "boolean logic", | |
| "instructions": ( | |
| "The function checks if a number is even. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def is_even(n): | |
| return n % 2 == 1 | |
| """, | |
| "fixed_code": """\ | |
| def is_even(n): | |
| return n % 2 == 0 | |
| """, | |
| "test_cases": [ | |
| {"input": 4, "expected": True}, | |
| {"input": 7, "expected": False}, | |
| {"input": 0, "expected": True}, | |
| ], | |
| "test_cases_description": "Correctly identifies even numbers", | |
| }, | |
| { | |
| "task_id": "easy_005", | |
| "domain": "list operations", | |
| "instructions": ( | |
| "The function should return the second element of a list. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def second_element(lst): | |
| return lst[2] | |
| """, | |
| "fixed_code": """\ | |
| def second_element(lst): | |
| return lst[1] | |
| """, | |
| "test_cases": [ | |
| {"input": [10, 20, 30], "expected": 20}, | |
| {"input": ["a", "b", "c"], "expected": "b"}, | |
| {"input": [99, 100], "expected": 100}, | |
| ], | |
| "test_cases_description": "Returns correct second element (index 1)", | |
| }, | |
| { | |
| "task_id": "easy_006", | |
| "domain": "math", | |
| "instructions": ( | |
| "The function should compute the factorial of n. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def factorial(n): | |
| if n == 0: | |
| return 0 | |
| result = 1 | |
| for i in range(1, n + 1): | |
| result *= i | |
| return result | |
| """, | |
| "fixed_code": """\ | |
| def factorial(n): | |
| if n == 0: | |
| return 1 | |
| result = 1 | |
| for i in range(1, n + 1): | |
| result *= i | |
| return result | |
| """, | |
| "test_cases": [ | |
| {"input": 0, "expected": 1}, | |
| {"input": 5, "expected": 120}, | |
| {"input": 3, "expected": 6}, | |
| ], | |
| "test_cases_description": "Correct factorial including base case factorial(0)==1", | |
| }, | |
| { | |
| "task_id": "easy_007", | |
| "domain": "string processing", | |
| "instructions": ( | |
| "The function should check if a string is a palindrome. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def is_palindrome(s): | |
| return s == s[1:][::-1] | |
| """, | |
| "fixed_code": """\ | |
| def is_palindrome(s): | |
| return s == s[::-1] | |
| """, | |
| "test_cases": [ | |
| {"input": "racecar", "expected": True}, | |
| {"input": "hello", "expected": False}, | |
| {"input": "madam", "expected": True}, | |
| ], | |
| "test_cases_description": "Correctly identifies palindromes", | |
| }, | |
| { | |
| "task_id": "easy_008", | |
| "domain": "data processing", | |
| "instructions": ( | |
| "The function should sum all even numbers in a list. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def sum_evens(nums): | |
| total = 0 | |
| for n in nums: | |
| if n % 2 == 1: | |
| total += n | |
| return total | |
| """, | |
| "fixed_code": """\ | |
| def sum_evens(nums): | |
| total = 0 | |
| for n in nums: | |
| if n % 2 == 0: | |
| total += n | |
| return total | |
| """, | |
| "test_cases": [ | |
| {"input": [1, 2, 3, 4, 5, 6], "expected": 12}, | |
| {"input": [1, 3, 5], "expected": 0}, | |
| {"input": [2, 4], "expected": 6}, | |
| ], | |
| "test_cases_description": "Sums only even numbers", | |
| }, | |
| { | |
| "task_id": "easy_009", | |
| "domain": "list operations", | |
| "instructions": ( | |
| "The function should reverse a string. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def reverse_string(s): | |
| return s[1:][::-1] | |
| """, | |
| "fixed_code": """\ | |
| def reverse_string(s): | |
| return s[::-1] | |
| """, | |
| "test_cases": [ | |
| {"input": "hello", "expected": "olleh"}, | |
| {"input": "abc", "expected": "cba"}, | |
| {"input": "x", "expected": "x"}, | |
| ], | |
| "test_cases_description": "Reverses a string correctly", | |
| }, | |
| { | |
| "task_id": "easy_010", | |
| "domain": "data processing", | |
| "instructions": ( | |
| "The function should return the minimum value from a list. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def find_min(nums): | |
| min_val = nums[0] | |
| for n in nums: | |
| if n > min_val: | |
| min_val = n | |
| return min_val | |
| """, | |
| "fixed_code": """\ | |
| def find_min(nums): | |
| min_val = nums[0] | |
| for n in nums: | |
| if n < min_val: | |
| min_val = n | |
| return min_val | |
| """, | |
| "test_cases": [ | |
| {"input": [3, 1, 4, 1, 5], "expected": 1}, | |
| {"input": [10, 2, 8], "expected": 2}, | |
| {"input": [-5, 0, 5], "expected": -5}, | |
| ], | |
| "test_cases_description": "Finds minimum value in a list", | |
| }, | |
| { | |
| "task_id": "easy_011", | |
| "domain": "math", | |
| "instructions": ( | |
| "The function should check if a number is prime. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def is_prime(n): | |
| if n < 2: | |
| return False | |
| for i in range(2, n): | |
| if n % i == 0: | |
| return True | |
| return False | |
| """, | |
| "fixed_code": """\ | |
| def is_prime(n): | |
| if n < 2: | |
| return False | |
| for i in range(2, n): | |
| if n % i == 0: | |
| return False | |
| return True | |
| """, | |
| "test_cases": [ | |
| {"input": 7, "expected": True}, | |
| {"input": 4, "expected": False}, | |
| {"input": 13, "expected": True}, | |
| ], | |
| "test_cases_description": "Correctly identifies prime numbers", | |
| }, | |
| { | |
| "task_id": "easy_012", | |
| "domain": "list operations", | |
| "instructions": ( | |
| "The function should remove duplicates from a list while preserving order. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def remove_duplicates(lst): | |
| seen = set() | |
| result = [] | |
| for item in lst: | |
| if item in seen: | |
| result.append(item) | |
| seen.add(item) | |
| return result | |
| """, | |
| "fixed_code": """\ | |
| def remove_duplicates(lst): | |
| seen = set() | |
| result = [] | |
| for item in lst: | |
| if item not in seen: | |
| result.append(item) | |
| seen.add(item) | |
| return result | |
| """, | |
| "test_cases": [ | |
| {"input": [1, 2, 2, 3, 3, 3], "expected": [1, 2, 3]}, | |
| {"input": ["a", "b", "a"], "expected": ["a", "b"]}, | |
| {"input": [1], "expected": [1]}, | |
| ], | |
| "test_cases_description": "Removes duplicates while preserving order", | |
| }, | |
| { | |
| "task_id": "easy_013", | |
| "domain": "string processing", | |
| "instructions": ( | |
| "The function should capitalize the first letter of every word. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def title_case(sentence): | |
| return sentence.lower() | |
| """, | |
| "fixed_code": """\ | |
| def title_case(sentence): | |
| return sentence.title() | |
| """, | |
| "test_cases": [ | |
| {"input": "hello world", "expected": "Hello World"}, | |
| {"input": "the quick brown fox", "expected": "The Quick Brown Fox"}, | |
| {"input": "python", "expected": "Python"}, | |
| ], | |
| "test_cases_description": "Converts sentence to title case", | |
| }, | |
| { | |
| "task_id": "easy_014", | |
| "domain": "data processing", | |
| "instructions": ( | |
| "The function should return the length of the longest word in a sentence. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def longest_word_length(sentence): | |
| words = sentence.split() | |
| return min(len(w) for w in words) | |
| """, | |
| "fixed_code": """\ | |
| def longest_word_length(sentence): | |
| words = sentence.split() | |
| return max(len(w) for w in words) | |
| """, | |
| "test_cases": [ | |
| {"input": "hello world", "expected": 5}, | |
| {"input": "I am learning Python programming", "expected": 11}, | |
| {"input": "cat", "expected": 3}, | |
| ], | |
| "test_cases_description": "Returns length of the longest word", | |
| }, | |
| { | |
| "task_id": "easy_015", | |
| "domain": "math", | |
| "instructions": ( | |
| "The function should return n raised to the power of 2. " | |
| "It has exactly one bug. Fix it." | |
| ), | |
| "buggy_code": """\ | |
| def square(n): | |
| return n * 3 | |
| """, | |
| "fixed_code": """\ | |
| def square(n): | |
| return n * n | |
| """, | |
| "test_cases": [ | |
| {"input": 4, "expected": 16}, | |
| {"input": 0, "expected": 0}, | |
| {"input": -3, "expected": 9}, | |
| ], | |
| "test_cases_description": "Returns n squared", | |
| }, | |
| ] | |
| def get_random_easy_task() -> dict: | |
| return random.choice(EASY_TASKS).copy() | |
| def get_task_by_id(task_id: str) -> dict: | |
| for t in EASY_TASKS: | |
| if t["task_id"] == task_id: | |
| return t.copy() | |
| return random.choice(EASY_TASKS).copy() | |