let it go

Finished
1import random
2import string
3
14class Robot:
2 def __init__(self):
3 pass
5 """A class representing a robot with a randomly generated name."""
6 _used_names = set()
47
8 def __init__(self):
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 AA000.
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 and can be used by another robot.
28 """
29 # Edge Case: Robot has no name, nothing to reset
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 """
39 # Edge Case: Handle name collision by retrying until unique name is found
40 while True:
41 letters = ''.join(random.choices(string.ascii_uppercase, k=2))
42 digits = ''.join(random.choices(string.digits, k=3))
43 new_name = letters + digits
44
45 # Edge Case: Check if name is already used
46 if new_name not in Robot._used_names:
47 Robot._used_names.add(new_name)
48 self._name = new_name
49 break
50
51# Handled Edge Cases: Robot has no name yet, generate a new one; Handle name collision by retrying until unique name is found; Check if name is already used; Robot has no name, nothing to reset
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.