xas

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 Names are unique across all robot instances.
10 """
11
12 # Class-level set to store all generated names for 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 actual name is generated on first access.
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 unique random name in the format of two uppercase letters
27 followed by three digits.
28
29 Returns:
30 str: The robot's unique name
31 """
32 # Edge Case: Robot has no name yet, generate one
33 if self._name is None:
34 self._generate_unique_name()
35 return self._name
36
937 def reset(self) -> None:
10 pass
38 """
39 Reset the robot to its factory settings by wiping its name.
40 The next time the name is accessed, a new unique name will be generated.
41 """
42 # Edge Case: Robot has a name that needs to be removed from the registry
43 if self._name is not None:
44 Robot._used_names.discard(self._name)
45 self._name = None
46
47 def _generate_unique_name(self) -> None:
48 """
49 Generate a unique name for the robot and store it.
50
51 This method ensures that each name is unique by checking against
52 the class-level set of used names and regenerating if necessary.
53 """
54 # Edge Case: Handle potential name collisions with retry logic
55 while True:
56 # Generate two random uppercase letters
57 letters = ''.join(random.choices(string.ascii_uppercase, k=2))
58 # Generate three random digits
59 digits = ''.join(random.choices(string.digits, k=3))
60 # Combine to form the name
61 new_name = letters + digits
62
63 # Check if this name is already used
64 if new_name not in Robot._used_names:
65 # Name is unique, store it and exit the loop
66 Robot._used_names.add(new_name)
67 self._name = new_name
68 break
69
70 # Handled Edge Cases: Robot has no name yet, Robot has a name that needs to be removed from the registry, Handle potential name collisions with retry logic
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.