Finished
11def rows(letter: str) -> list[str]:
2 pass
2 # Edge Case: Empty or null input
3 if not letter:
4 return []
5
6 # Edge Case: Invalid input characters (non-alphabetic)
7 if not letter.isalpha() or len(letter) != 1:
8 raise ValueError("Input must be a single alphabetic character")
9
10 # Edge Case: Case sensitivity issues - convert to uppercase
11 letter = letter.upper()
12
13 # Edge Case: Single letter input ('A')
14 if letter == 'A':
15 return ['A']
16
17 # Calculate the size of the diamond
18 n = ord(letter) - ord('A')
19
20 result = []
21
22 # Generate top half including middle row
23 for i in range(n + 1):
24 current_char = chr(ord('A') + i)
25
26 if i == 0:
27 # First row: only one 'A'
28 line = ' ' * n + 'A' + ' ' * n
29 else:
30 # Other rows: two identical letters with increasing spacing
31 left_spaces = n - i
32 middle_spaces = 2 * i - 1
33 line = ' ' * left_spaces + current_char + ' ' * middle_spaces + current_char + ' ' * left_spaces
34
35 result.append(line)
36
37 # Generate bottom half (mirror of top half, excluding middle row)
38 for i in range(n - 1, -1, -1):
39 result.append(result[i])
40
41 return result
42
43# Handled Edge Cases: empty or null input, invalid input characters (non-alphabetic), case sensitivity issues, single letter input ('A')
Test NameStatus
test_degenerate_case_with_a_single_a_row
Pass
test_degenerate_case_with_no_row_containing_3_distinct_groups_of_spaces
Pass
test_largest_possible_diamond
Pass
test_smallest_non_degenerate_case_with_even_diamond_side_length
Pass
test_smallest_non_degenerate_case_with_odd_diamond_side_length
Pass

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