Trilhas
/
Go
Go
/
Exercícios
/
Nome do robô
Nome do robô

Nome do robô

Médio

Instruções

Gerencie as configurações de fábrica do robô.

Quando um robô sai da linha de montagem, ele não tem nome.

Na primeira vez que você liga um robô, um nome aleatório é gerado no formato de duas letras maiúsculas seguidas de três dígitos, como RX837 ou BC811.

De vez em quando, precisamos restaurar um robô para as configurações de fábrica. Isso apaga o nome dele. Na próxima vez que você perguntar, esse robô vai responder com um novo nome aleatório.

Os nomes precisam ser aleatórios: eles não devem seguir uma sequência previsível. Usar nomes aleatórios implica o risco de colisões. Sua solução precisa garantir que todo robô existente tenha um nome único.

Implementação

É possível ficar sem nomes de robô: quando todos os nomes possíveis já tiverem sido atribuídos, um erro deve ser retornado.

Teste bônus

Quando você conseguir fazer o go test passar, vai encontrar na suíte de testes um teste chamado TestCollisions, que é ignorado por padrão porque pode demorar bastante. Esse teste cria novos robôs até que não seja mais possível atribuir nomes novos ao robô.

Para fazer o teste rodar, remova esta linha:

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

Para fazer esse teste passar, você vai precisar garantir que o nome de um robô não tenha sido usado antes e que os nomes possam ser atribuídos de forma eficiente.


Fonte

Uma sessão de depuração com Paul Blackwell na gSchool.
Editar via GitHub O link abre em uma nova janela ou aba
Go Exercism

Tudo pronto para começar Nome do robô?

Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.