Choose Your Own Adventure
http://codegolf.stackexchange.com/questions/3474/choose-your-own-adventure
by briguy37
JavaScript
//Get Input from user
inputLines = prompt().split('\\n');
//Starting at 0, check for solutions with more moves
moves = 0;
while (!(solution = getSolution(moves++, 1)));
/**
* Recursive function that returns the moves string or nothing if no
* solution is available.
*
* @param numMoves - number of moves to check
* @param startPage - the starting page to check
* @param i - A counter. Only included to make this a local variable.
* @param line - The line being tested. Only included to make this a local variable.
*/
function getSolution(numMoves, startPage, i, line) {
//Only check for solutions if there are more than one moves left
if (numMoves > 0) {
//Iterate through all the lines
for (i=0; text = inputLines[i++];) {
line = text.split(' ');
//If the line's start page matches the current start page
if (line[0] == startPage) {
//If the goal page is the to page return the step
if (line[1] == 100) {
return text;
}
//If there is a solution in less moves from the to page, return that
if (partialSolution = getSolution(numMoves - 1, line[1])) {
return line[0] + ' ' + partialSolution;
}
}
}
}
}
//Output the solution
alert(solution);
//Test input string
var test = "1 10\n10 5\n10 13\n5 12\n5 19\n13 15\n12 20\n15 100";