var G = {
// Input
data: [
{w: 0, b: 1},
{w: 2, b: 3},
{w: 3, b: 0}
],
pickTwo: function(array) {
var choiceFirstIndex = Math.floor(Math.random() * (array.length));
if (choiceFirstIndex == (array.length - 1)) {
choiceFirst = array[choiceFirstIndex];
choiceSecond = array[0];
array.splice(choiceFirstIndex, 1);
array.splice(0, 1);
}
else {
choiceSecondIndex = choiceFirstIndex + 1;
choiceFirst = array[choiceFirstIndex];
choiceSecond = array[choiceSecondIndex];
array.splice(choiceFirstIndex, 2);
}
return [choiceFirst, choiceSecond, array];
},
analyse: function(ballsTotal) {
// Check if there's only one ball...
if (ballsTotal.length > 1) {
result = G.pickTwo(ballsTotal);
ballsTotal = result[2];
ballOne = result[0];
ballTwo = result[1];
// Check if either of the chosen balls are "b"...
// If it is, then we can assume last ball will be "b"
if ((ballOne == "b") || (ballTwo == "b")) {
return "b";
}
else {
// By this point we can assume we have chosen "w" "w"
// ... if there is still more than one ball in the hat, then put a "w" back and analyse again...
// ... otherwise assume that the final ball is "w"
if (ballsTotal.length > 0) {
ballsTotal.push("w");
G.analyse(ballsTotal);
}
else {
return "w";
}
}
}
else {
return ballsTotal[0];
}
}
};
$(function() {
// Start codez on load
for (i=0; i<G.data.length; i++) {
ballsTotal = [];
// push to balls using G.data
for (j=0; j<G.data[i]["w"]; j++) { ballsTotal.push("w"); };
for (j=0; j<G.data[i]["b"]; j++) { ballsTotal.push("b"); };
finalBall = G.analyseTwo(ballsTotal);
// Check the final ball...
console.log(finalBall);
}
// End codez
});