Finished
1import random
2import string
3
14class Robot:
5 # Class variable to hold the set of used names
6 _used_names = set()
7
8 # Class variable to hold the pool of available names
9 _name_pool = None
10
211 def __init__(self):
3 pass
4
12 self._name = None
13 self._initialize_name_pool()
14 self._assign_name()
15
516 @property
617 def name(self) -> str:
7 pass
8
18 return self._name
19
920 def reset(self) -> None:
10 pass
21 # Edge Case: Resetting a robot releases its name back to the pool
22 if self._name:
23 Robot._used_names.discard(self._name)
24 self._assign_name()
25
26 @classmethod
27 def _initialize_name_pool(cls):
28 # Edge Case: Initialize the name pool only once
29 if cls._name_pool is None:
30 cls._name_pool = set()
31 letters = string.ascii_uppercase
32 digits = string.digits
33 for first_letter in letters:
34 for second_letter in letters:
35 for digit1 in digits:
36 for digit2 in digits:
37 for digit3 in digits:
38 name = f"{first_letter}{second_letter}{digit1}{digit2}{digit3}"
39 cls._name_pool.add(name)
40
41 def _assign_name(self):
42 # Edge Case: Handle the case when all possible names are used
43 if len(Robot._used_names) >= len(Robot._name_pool):
44 raise RuntimeError("No more unique names available")
45
46 # Get available names by subtracting used names from the pool
47 available_names = Robot._name_pool - Robot._used_names
48
49 # Edge Case: Ensure there's at least one name available
50 if not available_names:
51 raise RuntimeError("No more unique names available")
52
53 # Randomly select a name from available names
54 selected_name = random.choice(list(available_names))
55
56 # Add to used names and assign to this robot
57 Robot._used_names.add(selected_name)
58 self._name = selected_name
59
60# Handled Edge Cases: Resetting a robot releases its name back to the pool, Initialize the name pool only once, Handle the case when all possible names are used, Ensure there's at least one name available
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.