kale

Finished
1import random
2import string
3
4
15class Robot:
6 _used_names = set()
7
28 def __init__(self):
3 pass
9 self._name = None
410
511 @property
612 def name(self) -> str:
7 pass
13 if self._name is None:
14 self._generate_name()
15 return self._name
816
917 def reset(self) -> None:
10 pass
18 # Edge Case: Removing the current name from used names before resetting
19 if self._name:
20 self._used_names.discard(self._name)
21 self._generate_name()
22
23 def _generate_name(self) -> None:
24 # Edge Case: Ensuring name uniqueness by retrying if name is already taken
25 # Prevent infinite loop by limiting attempts
26 max_attempts = 1000
27 attempts = 0
28
29 while attempts < max_attempts:
30 # Edge Case: Generating random names with exactly 2 uppercase letters followed by 3 digits
31 letters = ''.join(random.choices(string.ascii_uppercase, k=2))
32 digits = ''.join(random.choices(string.digits, k=3))
33 new_name = letters + digits
34
35 # Edge Case: Checking for name collision and only accepting unique names
36 if new_name not in self._used_names:
37 self._used_names.add(new_name)
38 self._name = new_name
39 return
40 attempts += 1
41
42 # If we've exhausted our attempts, raise an exception
43 raise RuntimeError("Unable to generate unique robot name after maximum attempts")
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.