lexicon

Finished
1import random
2import string
3
14class Robot:
5 """A class representing a robot with a randomly generated name."""
6 _used_names = set()
7
28 def __init__(self):
3 pass
4
9 """Initialize a new robot with no name."""
10 self._name = None
11
512 @property
613 def name(self) -> str:
7 pass
8
14 """Get the robot's name, generating a new one if it doesn't exist.
15
16 Returns:
17 str: The robot's name in format of two uppercase letters followed by three digits.
18 """
19 # Edge Case: Robot has no name yet, generate a new one
20 if self._name is None:
21 self._generate_name()
22 return self._name
23
924 def reset(self) -> None:
10 pass
25 """Reset the robot to factory settings, wiping its name.
26
27 The old name is released back to the pool of possible names.
28 """
29 # Edge Case: Robot has a name that needs to be released before resetting
30 if self._name is not None:
31 Robot._used_names.discard(self._name)
32 self._name = None
33
34 def _generate_name(self) -> None:
35 """Generate a unique random name for the robot.
36
37 The name format is two uppercase letters followed by three digits.
38 Ensures the generated name is unique across all robots.
39 """
40 # Edge Case: Handle potential name collision by retrying until unique name is found
41 while True:
42 # Generate two random uppercase letters
43 letters = ''.join(random.choices(string.ascii_uppercase, k=2))
44 # Generate three random digits
45 digits = ''.join(random.choices(string.digits, k=3))
46 # Combine to form the name
47 new_name = letters + digits
48
49 # Check if name is unique
50 if new_name not in Robot._used_names:
51 Robot._used_names.add(new_name)
52 self._name = new_name
53 break
54
55 # Handled Edge Cases: Robot has no name yet, generate a new one; Robot has a name that needs to be released before resetting; Handle potential name collision by retrying until unique name is found
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.