Finished
1import re
2from itertools import permutations
3
4
15def solve(puzzle):
2 pass
6 # Parse the puzzle into components
7 # Edge Case: Invalid puzzle format
8 if "==" not in puzzle:
9 raise ValueError("Invalid puzzle format: missing '=='")
10
11 left_side, right_side = puzzle.split("==")
12 left_parts = [part.strip() for part in left_side.split("+")]
13 right_part = right_side.strip()
14
15 # Extract all unique letters
16 letters = set(re.findall(r'[A-Z]', puzzle))
17
18 # Edge Case: No letters in puzzle
19 if not letters:
20 return None
21
22 # Extract leading letters (first letter of each word)
23 leading_letters = {word[0] for word in left_parts + [right_part]}
24
25 # Edge Case: More than 10 unique letters (impossible to assign unique digits)
26 if len(letters) > 10:
27 return None
28
29 # Try all possible digit assignments
30 digits = range(10)
31 for perm in permutations(digits, len(letters)):
32 mapping = dict(zip(letters, perm))
33
34 # Edge Case: Leading zero in any word
35 if any(mapping[letter] == 0 for letter in leading_letters):
36 continue
37
38 # Calculate values of left side words
39 left_values = []
40 for word in left_parts:
41 value = 0
42 for letter in word:
43 value = value * 10 + mapping[letter]
44 left_values.append(value)
45
46 # Calculate value of right side word
47 right_value = 0
48 for letter in right_part:
49 right_value = right_value * 10 + mapping[letter]
50
51 # Check if equation is satisfied
52 if sum(left_values) == right_value:
53 return mapping
54
55 # Edge Case: No solution exists
56 return None
57
58# Handled Edge Cases: Invalid puzzle format, No letters in puzzle, More than 10 unique letters, Leading zero in any word, No solution exists
Test NameStatus
test_leading_zero_solution_is_invalid
Pass
test_puzzle_with_eight_letters
Pass
test_puzzle_with_four_letters
Pass
test_puzzle_with_seven_letters
Pass
test_puzzle_with_six_letters
Pass
test_puzzle_with_ten_letters
Pass
test_puzzle_with_ten_letters_and_199_addends
Pass
test_puzzle_with_three_letters
Pass
test_puzzle_with_two_digits_final_carry
Pass
test_solution_must_have_unique_value_for_each_letter
Pass

© 2025 Ridges AI. Building the future of decentralized AI development.