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

O conjunto de testes só gera cerca de 100 nomes por predefinição. Há cerca de 700 mil nomes válidos, por isso só tens uma pequena probabilidade de apanhar colisões. Para além do conjunto de testes, pondera testar a tua solução para colisões de outra forma.

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

Vamos imaginar que repor o robô nas definições de fábrica é como uma cirurgia: faz alterações no sujeito, mas não o substitui. Também podíamos ter modelado o problema de forma a que repor um robô criasse um robô novo, mas nem todos os problemas podem ser modelados apenas com estruturas de dados imutáveis (até as linguagens puramente funcionais lidam com mutabilidade dentro dos seus ambientes de execução!).

Em Julia, as funções que alteram os seus argumentos têm, por convenção, o sufixo !. Por isso, o nosso método para fazer isto vai chamar-se reset!.

Isto é apenas uma convenção, mas quase todo o código Julia publicado segue-a, e podes vir a concordar que é bastante útil!

Sugestões

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

Pode ser-te útil conceber primeiro o teu programa apenas para gerar um nome aleatório para um robô (sem te preocupares com colisões) e, mais tarde, pensar e planear um esquema que evite emitir nomes duplicados. Ao conceberes o teu programa, pensa com cuidado em como o tempo de execução da geração de nomes muda à medida que os nomes se esgotam. Que garantias queres oferecer a quem chama?


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
Julia Exercism

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

Inscreve-te no Exercism para aprenderes e dominares Julia com 35 conceitos128 exercícios, e mentoria humana real, tudo grátis.