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.