Man-demon puzzle is like a classic river-crossing puzzle. The missionaries-cannibals—one of the river-crossing puzzles—is a well-known game problem in artificial intelligence, where it is used as an example of problem representation. Not only logic but also reasoning and memory skills are required to solve these kinds of puzzles.
How it works
In the man-demon river-crossing puzzle, three men and three demons have to cross a river using a single boat. There are three conditions: First, all six of them will have to cross the river using this boat only. Second, the boat can carry a maximum of two passengers at a time. Third, at any time, when both men and demons are standing on either bank, the demons will eat men if men on that bank are outnumbered by demons. All men should cross the river without being eaten by demons.
The algorithm of this puzzle has been taken from Wikipedia (http://en.wikipedia.org/wiki/Missionaries_and_cannibals_problem).
Each green block represents a man, a red block represents a demon and the brown block represents a boat (refer screenshot). White blocks represent blank spaces. At least twelve block movements are needed to reach the solution. You need to remember which blocks have been moved previously and which blocks need to be moved next.
In case you are stuck while solving the problem, a chart with steps to move the correct blocks is also included in the program. Just click ‘Solution Algorithm’ in the instructions section to see the chart table. This table helps you to pick man, demon and the right combination of the two at a time, which makes the program user-friendly.
The program uses PNG (portable network graphics) images to depict men, demons, boat and blank spaces. Make sure that these files are placed in the same folder as the MDP.htm file.
The various functions used in the program are:
Padavani_Itukatu_Taralinchu (Evarini). It is used to shift the boat from the left side of the river to the right side and vice-versa.
Lekka_pettuko( ). It is used to check the steps so that the algorithm satisfies the constraints without any loss of men. It also alerts you when a wrong step is taken; in this case, a man is eaten by demons.
Saripoindo_ledo_choodu( ). It checks whether all men and demons have crossed the river safely without any loss of men.
Edama_odduki_cherchu( ). It shifts the laden boat to the left bank from the right bank of the river, in the same manner.
Kudi_odduki_cherchu( ). It shifts the boat from the left bank to the right bank of the river.
Modati_nundi( ). It resets the puzzle to the start.
Naaku_teliyatamledu_Ela_Cheyyalo_Cheppava( ). It is used to get step-by-step help by launching ‘Solution Algorithm’ mode.
Download source code: click here
The author, a B.Tech in electronics and communications engineering, likes coding and has keen interest in space technology (satellite communication) and mobile communication