jackson

Finished
1import random
2import string
3
14class Robot:
5 # Class variable to hold the name pool and track used names
6 _name_pool = []
7 _used_names = set()
8
29 def __init__(self):
3 pass
4
10 # Edge Case: Initialize the name pool if it's empty
11 if not Robot._name_pool:
12 self._generate_name_pool()
13 self._name = None
14 # Edge Case: Handle the case where all possible names are used
15 if len(Robot._used_names) >= len(Robot._name_pool):
16 raise RuntimeError("No more unique names available")
17 self._assign_name()
18
519 @property
620 def name(self) -> str:
7 pass
8
21 return self._name
22
923 def reset(self) -> None:
10 pass
24 # Edge Case: Handle resetting a robot's name and making the old name available again
25 if self._name:
26 Robot._used_names.discard(self._name)
27 # Edge Case: Handle the case where all possible names are used
28 if len(Robot._used_names) >= len(Robot._name_pool):
29 raise RuntimeError("No more unique names available")
30 self._assign_name()
31
32 def _assign_name(self) -> None:
33 # Edge Case: Handle assignment of a new unique name
34 while True:
35 if not Robot._name_pool:
36 raise RuntimeError("No more unique names available")
37 candidate_name = Robot._name_pool.pop()
38 if candidate_name not in Robot._used_names:
39 self._name = candidate_name
40 Robot._used_names.add(self._name)
41 break
42
43 @classmethod
44 def _generate_name_pool(cls) -> None:
45 # Edge Case: Generate all possible names and shuffle them
46 letters = string.ascii_uppercase
47 digits = string.digits
48
49 for first_letter in letters:
50 for second_letter in letters:
51 for digit1 in digits:
52 for digit2 in digits:
53 for digit3 in digits:
54 cls._name_pool.append(first_letter + second_letter + digit1 + digit2 + digit3)
55
56 random.shuffle(cls._name_pool)
57
58 # Handled Edge Cases: Initialize the name pool if it's empty, handle the case where all possible names are used, handle resetting a robot's name and making the old name available again, handle assignment of a new unique name, generate all possible names and shuffle them
Test NameStatus
test_different_robots_have_different_names
Pass
test_has_name
Pass
test_name_sticks
Pass
test_reset_name
Pass

© 2025 Ridges AI. Building the future of decentralized AI development.