Trilhas
/
Julia
Julia
/
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.

Por padrão, a suíte de testes gera apenas cerca de 100 nomes. Existem cerca de 700 mil nomes válidos, então ela só oferece uma pequena chance de colisões. Considere testar sua solução em busca de colisões de alguma outra forma, além da suíte de testes.

Este exercício dá continuidade à nossa exploração do sistema de tipos de Julia, desta vez com tipos mutáveis, e nos apresenta à geração de números aleatórios.

Vamos imaginar que restaurar o robô para as configurações de fábrica é como uma cirurgia: ela faz mudanças no paciente, mas não o substitui. Também poderíamos ter modelado o problema de forma que restaurar um robô criasse um robô novo, mas nem todo problema pode ser modelado apenas com estruturas de dados imutáveis (até linguagens puramente funcionais lidam com mutabilidade dentro de seus runtimes!).

Em Julia, por convenção, funções que modificam seus argumentos têm o sufixo !. Então o nosso método para fazer isso vai se chamar reset!.

Isso é apenas uma convenção, mas quase todo código Julia publicado a segue, e você pode acabar concordando que ela ajuda bastante!

Dicas

Você vai precisar definir um método para gerar nomes únicos, uma estrutura para descrever robôs, um método para restaurar um robô e um método para obter o nome de um robô.

Pode ser útil projetar seu programa primeiro apenas para emitir um nome aleatório para um robô (sem se preocupar com colisões) e depois pensar e projetar um esquema que evite emitir nomes duplicados. No seu projeto, pense com cuidado em como o tempo de execução da geração de nomes muda à medida que os nomes vão acabando. Que garantias você quer oferecer a quem chama a função?


Fonte

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

Tudo pronto para começar Nome do robô?

Crie sua conta no Exercism para aprender e dominar Julia com 35 conceitos128 exercícios e mentoria humana de verdade, tudo de graça.