great

Finished
1import random
2import string
3
14class Robot:
5 """
6 A class representing a robot with a randomly assigned name.
7
8 The robot's name consists of two uppercase letters followed by three digits.
9 Names are unique and randomly selected from a pre-generated pool.
10 """
11
12 # Class-level set to track all used names across all robot instances
13 _used_names = set()
14
15 # Class-level list of all possible names
16 _name_pool = []
17
218 def __init__(self):
3 pass
4
19 """
20 Initialize a new Robot instance with no name.
21 The actual name is generated on first access.
22 """
23 self._name = None
24
525 @property
626 def name(self) -> str:
7 pass
8
27 """
28 Get the robot's name. If the robot doesn't have a name yet,
29 assign a random unique name from the pool.
30
31 Returns:
32 str: The robot's name in format like 'AB123'
33
34 Raises:
35 RuntimeError: If all possible names are already in use
36 """
37 # Edge Case: Robot has no name yet, need to assign one
38 if self._name is None:
39 # Edge Case: All possible names are already used
40 if len(self._used_names) >= 676000: # 26*26*10*10*10
41 raise RuntimeError("No more names available")
42
43 # Generate all possible names if not already done
44 # Edge Case: Name pool is empty (first robot initialization)
45 if not self._name_pool:
46 letters = string.ascii_uppercase
47 digits = string.digits
48 self._name_pool = [
49 f"{l1}{l2}{d1}{d2}{d3}"
50 for l1 in letters
51 for l2 in letters
52 for d1 in digits
53 for d2 in digits
54 for d3 in digits
55 ]
56
57 # Select a name that's not already used
58 available_names = list(set(self._name_pool) - self._used_names)
59 self._name = random.choice(available_names)
60 self._used_names.add(self._name)
61
62 return self._name
63
964 def reset(self) -> None:
10 pass
65 """
66 Reset the robot to factory settings, wiping its name.
67 The name is returned to the pool and can be reassigned to other robots.
68 """
69 # Edge Case: Robot has a name that needs to be released back to the pool
70 if self._name is not None:
71 self._used_names.discard(self._name)
72 self._name = None
73
74 # Handled Edge Cases: Robot has no name yet, need to assign one; All possible names are already used; Name pool is empty (first robot initialization); Robot has a name that needs to be released back to the pool
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.