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 += "&nbsp;&nbsp;&nbsp;&nbsp;" + countAttempts + "<br/>";
  guessNow = "";
  guessResults = "";
  countAttempts = "";
}