Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Possível resolução do caso dos missionários e canibais

Em linguagem parcialmente natural, fiz algo assim:

Onde L indica Left, R, Right, e S indica State.

Estado original:

S1: (3C,3M)L|(0C,0M)R

1C conduz 1C, e retorna:

S2: (2C,3M)L|(1C,0M)R

1C conduz 1M, e retorna:

S3: (2C,2M)L|(1C,1M)R

1C conduz 1M, e retorna:

S4: (2C,1M)L|(1C,2M)R

1C conduz 1C, e retorna:

S5: (1C,1M)|(2C,2M)R

1C conduz 1M, e fica:

(0C,0M)L|(3C,3M)R.

Prova/Dica: manter os totais sempre em 3 para cada classe, somando (n)C Left + n(C) Right e (n)M Left + (n)M Right.
Conclusão: Ao que parece, em nenhum momento o número de C ficou maior que o número de M.

Está correta essa forma de fazer?

2 respostas
solução!

Oi, Joao Batista, tudo bem?

Achei sensacional a sua iniciativa de usar uma notação formal (S para Estados, L/R para as margens). Isso demonstra um Pensamento Computacional afiado na etapa de Abstração! É exatamente isso que buscamos no curso.

Analisando a sua lógica, notei um detalhe crucial no passo S4 que infringe uma das regras de segurança do problema.

Vamos olhar de perto o estado que você descreveu em S4:

S4: (2C, 1M) L | (1C, 2M) R

Observe a Margem Esquerda (L): você deixou 2 Canibais e apenas 1 Missionário.
A regra do problema diz: "O número de canibais não pode ser superior ao número de missionários em nenhuma das margens" (senão, o missionário vira jantar! rsrs).

Neste caso, como , o jogo terminaria aqui com uma derrota.

Onde está o desafio?
A grande "pegadinha" desse problema é que, em certos momentos, você precisa trazer pessoas de volta para manter o equilíbrio, o que faz a solução ser um pouco mais longa (geralmente em torno de 11 passos, como mencionado na aula).

Bons estudos!

Sucesso

Imagem da comunidade

Muito bom. Eu tinha pensado nessa questão, mas temi estar indo contra as regras. Além disso, não pensei claramente sobre como e em que ponto ou pontos se daria essa troca. Fiquei receoso que estivesse apenas invertendo os lados da viagem, sem resolver o problema. Obrigado pela sugestão e por avisar da falha em S4.