轨道
/
Go
Go
/
练习
/
机器人名字
机器人名字

机器人名字

中等

说明

管理机器人的出厂设置。

机器人刚走下生产线时,还没有名字。

第一次启动机器人时,会随机生成一个名字,格式为两个大写字母后跟三个数字,例如 RX837 或 BC811。

偶尔我们需要把机器人重置为出厂设置,这意味着它的名字会被清除。 下次你再询问时,这个机器人会给出一个新的随机名字。

名字必须是随机的:不能遵循可预测的序列。 使用随机名字意味着存在名字冲突的风险。 你的解答必须确保每个已存在的机器人都有独一无二的名字。

实现

机器人名字是可能用完的。一旦所有可能的机器人名字都已分配出去,就应当返回一个错误。

附加测试

当你让 go test 通过之后,你会发现测试套件里有一个名为 TestCollisions 的测试,它默认会被跳过,因为可能要花很长时间。 这个测试会不断创建新的机器人,直到再也不能给机器人分配新的名字为止。

要让这个测试运行起来,请删掉这一行:

t.Skip("skipping test as it can take a long time to run if solution is sub-optimal.")

要让这个测试通过,你必须确保机器人的名字之前没有被用过,并且名字能够被高效地分配。


来源

与 Paul Blackwell 在 gSchool 进行的一次调试会话。
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Go Exercism

准备好开始 机器人名字 了吗?

注册 Exercism,借助 34 个概念165 个练习 和真人导师指导,学习并掌握 Go,全部免费。