Gere as configurações de fábrica dos robôs.
Quando um robô sai da linha de montagem, não tem nome.
Da primeira vez que ligas um robô, é gerado um nome aleatório no formato de duas letras maiúsculas seguidas de três algarismos, como RX837 ou BC811.
De vez em quando, é preciso repor um robô nas configurações de fábrica. Isso faz com que o nome seja apagado. Da próxima vez que perguntas, o robô responde com um novo nome aleatório.
Os nomes têm de ser aleatórios: não devem seguir uma sequência previsível. Usar nomes aleatórios implica um risco de colisões. A tua solução tem de garantir que todos os robôs existentes têm um nome único.
É possível ficar sem nomes de robôs. Quando todos os nomes possíveis de robôs já tiverem sido atribuídos, deve ser devolvido um erro.
Quando conseguires que o go test passe, vais ver que há um teste no conjunto de testes chamado TestCollisions que é ignorado por predefinição, uma vez que pode demorar muito tempo.
Este teste cria novos robôs até já não ser possível atribuir mais nomes novos ao robô.
Para fazer com que o teste corra, remove esta linha:
t.Skip("skipping test as it can take a long time to run if solution is sub-optimal.")
Para que este teste passe, tens de garantir que o nome de um robô não foi usado antes e que os nomes podem ser atribuídos de forma eficiente.
Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.