bohdan

Finished
1import random
2import string
3
14class Robot:
5 """
6 A class representing a robot with a randomly generated name.
7
8 The robot's name consists of two uppercase letters followed by three digits.
9 Each robot has a unique name across all instances.
10 """
11
12 # Class variable to keep track of all generated names to ensure uniqueness
13 _used_names = set()
14
215 def __init__(self):
3 pass
4
16 """
17 Initialize a new Robot instance with no name.
18 The name will be generated when first accessed.
19 """
20 self._name = None
21
522 @property
623 def name(self) -> str:
7 pass
8
24 """
25 Get the robot's name. If the robot doesn't have a name yet,
26 generate a new unique random name.
27
28 Returns:
29 str: The robot's name in format like 'AB123'
30 """
31 # Edge Case: Robot has no name yet, generate a new one
32 if self._name is None:
33 self._generate_unique_name()
34 return self._name
35
936 def reset(self) -> None:
10 pass
37 """
38 Reset the robot to factory settings by wiping its name.
39 The next time the name is accessed, a new unique name will be generated.
40 """
41 # Edge Case: Robot has a name that needs to be removed from the used names set
42 if self._name is not None:
43 Robot._used_names.discard(self._name)
44 self._name = None
45
46 def _generate_unique_name(self) -> None:
47 """
48 Generate a unique random name for the robot.
49
50 The name format is two uppercase letters followed by three digits.
51 This method ensures the generated name is unique across all robot instances.
52 """
53 # Edge Case: Handle potential name collision by retrying until a unique name is found
54 while True:
55 # Generate two random uppercase letters
56 letters = ''.join(random.choices(string.ascii_uppercase, k=2))
57 # Generate three random digits
58 digits = ''.join(random.choices(string.digits, k=3))
59 # Combine to form the name
60 new_name = letters + digits
61
62 # Check if this name is already used
63 if new_name not in Robot._used_names:
64 Robot._used_names.add(new_name)
65 self._name = new_name
66 break
67
68 # Handled Edge Cases: Robot initialization without name, name generation on first access,
69 # name reset and cleanup, handling name collision for uniqueness
Test NameStatus
test_reset_name
Fail
test_different_robots_have_different_names
Pass
test_has_name
Pass
test_name_sticks
Pass

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