JSFiddle - React, Tailwind, and code Playground
by Erik East
HTML
<p>Enter a number (1-15):<input type="text" id="yourNumber" style="width:50px;"/></p>
<input type="button" value="Create Array" onClick="guessArray();" />
<br><br>
<div id="output"></div>
JavaScript
var arraySize;
var array;
var eachGuess;
var upperLimit = arraySize - 1;
var lowerLimit = 0;
var guessNow;
var countAttempts = 0;
var guessResults;
var report;
function guessArray() {
var eachGuess;
var yourNumber = parseInt(document.getElementById("yourNumber").value);
arraySize = yourNumber;
array = new Array(arraySize);
var arrayListStart = "";
report = "";
var i;
for (i = 0; i < array.length; i++) {
array[i] = i + 1;
arrayListStart += i + ":" + array[i] + "<br/>";
}
for (eachGuess = 1; eachGuess < array.length + 1; eachGuess++) {
guessOnce(eachGuess);
}
document.getElementById("output").innerHTML = report;
}
function guessOnce(eachGuess) {
var upperLimit = arraySize - 1;
var lowerLimit = 0;
guessResults = "";
countAttempts = "";
stillWrong = "y";
do {
guessNow = Math.floor(((upperLimit - lowerLimit) / 2) + lowerLimit);
countAttempts++;
if (array[guessNow] == eachGuess) {
stillWrong = "n";
guessResults += array[guessNow] + " ";
}
if (array[guessNow] > eachGuess) {
stillWrong = "y";
upperLimit = guessNow;
}
if (array[guessNow] < eachGuess) {
stillWrong = "y";
lowerLimit = guessNow + 1;
}
}
while (stillWrong == "y")
report += "";
report += guessResults;
report += " " + countAttempts + "<br/>";
guessNow = "";
guessResults = "";
countAttempts = "";
}