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

Nome do robô

Médio

Instruções

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.

Implementação

É 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.

Teste bónus

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.


Fonte

Uma sessão de depuração com o Paul Blackwell na gSchool.
Editar via GitHub A ligação abre numa nova janela ou separador
Go Exercism

Estás pronto para começar Nome do robô?

Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.