Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Sugestão] Canibais e Missionários

Eu automaticamente pensei em outro modo quando interliguei na minha cabeça.

  • L - Left sendo lado esquerdo, B - Boat sendo o barco, R - Right sendo lado direito.

L = 3C, 3M.; B = 0C, 0M.; R = 0C, 0M.

*1.0
L 2C, 2M; B 1C, 1M; R 0C, 1M.

*2.0
L 1C, 2M; B 2C, 0M; R 1C, 1M.

*3.0
L 1C, 1M; B 1C, 1M; R 1C, 2M.

*4.0
L 1C, 0M; B 1C, 1M; R 1C, 3M.

*5.0
L 0C, 0M; B 2C, 0M; R 3C, 3M.

Desse modo creio que também dê certo, sem quebrar o código/regras, sendo elas. Podendo levar apenas 2 pessoas por vez e, não podendo deixar do lado L ou R com um número maior de canibais que missionários.

Código completo abaixo.

  • O barco sempre irá com uma quantidade, depositara e voltara com outra, ">> e <<" sinalizam que o barco esta indo com um valor e voltando com outro.

*1.0

L 2C, 2M; B 1C, 1M; R 0C, 1M.
<< L2C, 2M; B 1C, 0M; R 0C, 1M.

*2.0

L 1C, 2M; B 2C, 0M; R 1C, 1M.
<< L 1C, 2M; B 1C, 0M; R 1C, 1M.

*3.0

L 1C, 1M; B 1C, 1M; R 1C, 2M.
<< L 1C, 1M; B 1C, 0M; R 1C, 2M.

*4.0

L 1C, 0M; B 1C, 1M; R 1C, 3M.
<< L 1C, 0M; B 1C, 0M; R 1C, 3M.

*5.0

L 0C, 0M; B 2C, 0M; R 3C, 3M.

  • É finzalizado sem a volta do barco.
1 resposta

Boa noite, Ryan! Tranquilo?

Gostei demais da sua resposta, continue assim!

Mandou muito bem explorando a representação de estados, detalhando cada transição do barco e garantindo que as regras de segurança fossem respeitadas. Essa clareza mostra domínio do raciocínio lógico e organização de passos, além de reforçar como o pensamento computacional ajuda a resolver problemas clássicos de forma estruturada e eficiente.

Para aprimorar sua solução, algumas boas práticas são:

  • Visualização: criar uma tabela ou diagrama para ilustrar cada estado da travessia.
  • Automatização: implementar em código para que o programa encontre sozinho o caminho seguro.
  • Generalização: pensar em como o algoritmo poderia resolver automaticamente para diferentes números de missionários e canibais.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: o que você considera mais interessante nesse desafio, manter o raciocínio manual e lógico como exercício ou expandir para um algoritmo que resolva automaticamente qualquer variação do problema?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!