7. Desafio de lógica: Três missionários e três canibais encontram-se na margem esquerda
de um rio. Nessa margem também existe um bote que pode transportar uma ou duas
pessoas. As seis pessoas pretendem todas passar para a margem direita (usando o bote).
No entanto, os missionários têm de arranjar um plano para consegui-lo de modo que, em
nenhuma circunstância, existam missionários numa margem em minoria relativamente
aos canibais, pois têm receio do que lhes possa acontecer. Quando o bote chega à margem,
os elementos do bote são contados como estando na margem. Assim, se houver apenas um canibal em uma margem, não podemos enviar a essa margem o bote com um canibal
e um missionário, pois, ao chegar à outra margem, serão dois canibais contra um
missionário. Lembre-se de que para o bote ir de uma margem a outra é necessário que
alguém esteja remando, ou seja, o bote nunca atravessa vazio. Faça um algoritmo que
exiba, passo a passo, como efetuar esta travessia de forma segura.
Soluções para a tarefa
Resposta:
Inicio:
var m 1, m2, m3;
var c = 3
var barco;
var ilha1;
var ilha2;
Se o numero de canibais (c) na ilha 1 ou ilha 2 for maior que o de missionários (m)
imprime( "missionario morreu");
Se o numero de missionarios for maior ou igual que o numero de canibais na ilha 1 e ilha 2
faça:
Move m1 para o barco e c1 para o barco.
barco recebe m1 e c1;
Atravessar m1 e c1.
Ilha2 recebe c1.
Move no barco para ilha1 m1.
barco recebe m1
Ilha 1 recebe m1.
Move no barco para ilha2 c2 e c3.
barco recebe c2 e c3;
ilha2 recebe c2.
Move no barco c3 para ilha 1.
barco recebe c3;
ilha1 recebe c3.
Move no barco m1 e m2 para ilha2.
barco recebe m1 e m2
ilha2 recebe m1
Move no barco para ilha1 m2 e c2
barco recebe m2 e c2;
ilha1 recebe c2
Move no barco para ilha2 m2 e m3.
barco recbe m2 e m3;
ilha2 recebe m2 e m3
Move no barco para ilha1 c1
barco recebe c1;
Move no barco para ilha2 c1 e c2
barco recebe c1 e c2;
ilha2 recebe c1
Move no barco para ilha1 c2
barco recebe c2;
Move no barco para ilha2 c2 e c3
barco recebe c2 e c3
ilha2 recebe c2 e c3.
Imprime ("ilha1 é igual a 0 tripulantes e na ilha2 consta 3 canibais e 3 missionários");
FIM