JSFiddle - React, Tailwind, and code Playground

JavaScript

function findFloor(f){
	var max = 1;
  var min = 0;
  
  //First egg.
  var n = 1;
  while (f(max)) {
  	min = max;
    n += 1;
  	max = tetrahedral(n);
  }
  
  if (max <= min + 1){
  	return min;
  }
  
  //Second egg.
  do {
  	var range = max - min;
    var floor = min + reverseTriangle(range);
    var smashed = !f(floor);
    if (smashed) {
    	max = floor;
    } else {
    	min = floor;
    }
  } while (!smashed && max > min + 1);
  
  if (max <= min + 1){
  	return min;
  }
  
  //Third egg.
  while (max > min + 1){
    var floor = min + 1;
    var smashed = !f(floor);
    if (smashed) {
    	max = floor;
    } else {
    	min = floor;
    }
    if (smashed) {
    	break;
    }
  }
  
  return min;
  
}

function reverseTriangle(x) {
	return Math.ceil((-1 + Math.sqrt(1 + 8 * x)) / 2);
}

function tetrahedral(n) {
	return n * (n + 1) * (n + 2) / 6;
}


var testCases = [0,1,2,3,4,6,7,8,10,14,15,18,20,27,29,40,57,61,91,104,133,194,233,308,425,530,735,1057,1308,1874,2576,3162,3769,3804,4872,6309,7731,11167,11476,15223,15603,16034,22761,29204,35268,42481,56238,68723,83062,95681,113965,152145,202644,287964,335302,376279,466202,475558,666030,743517,782403,903170,1078242,1435682,1856036,2373214,3283373,4545125,6215594,7309899,7848365,8096538,10409246,15103057,20271921,22186329,23602446,32341327,33354300,46852754,65157555,93637992,107681394,152487773,181996529,225801707,324194358,435824227,579337939,600264328,827690923,1129093889,1260597310,1473972478,1952345052,1977336057,2512749509,3278750235,3747691805,5146052509];

var score = 0;
var scores = {};
function generateF(X) {
	var eggsLeft = 3;
  scores[X] = 0;
	function f(n) {
    if (eggsLeft <= 0) {
    	console.log('Disqualified!');
    }
  	score += 1;
    scores[X] += 1;
    if (n > X) {
    	eggsLeft--;
    }
    return n <= X;
  }
  return f;
}

for (var i = 0; i < testCases.length; i++) {
	var testCase = testCases[i];
  var floor = findFloor(generateF(testCase));
  if (floor != testCase) {
 ...