Tienes 2 huevos Estás en un edificio de 100 pisos. Dejas caer el huevo de un piso en particular. Se rompe o sobrevive. Si sobrevive, puedes lanzar el mismo huevo desde un piso más alto. ¿Cuántos intentos necesita para identificar el piso máximo en el que el huevo no se rompe cuando se tira hacia abajo?

Esto ya está en la lista de “preguntas prohibidas”, así que supongo que es un juego justo.

Para preguntas de este tipo, trato de determinar si el candidato (a) no ha visto este problema antes, (b) puede elaborar algún enfoque de razonamiento, y (c) puede explicarlo, algo como el siguiente. Seguiría las ideas del candidato donde quiera que lideraran, y trataría de descubrir su habilidad para organizar hechos, seguir su propia lógica, abstenerse de BS, y quizás extraer conceptos o fórmulas importantes de la memoria como herramientas. Idealmente, también aprenderé de un candidato una forma nueva o diferente de ver el problema. Si el candidato obtiene “la respuesta correcta” o no es secundario a estas observaciones.

Lo primero es ver cuánto tarda el candidato en reconocer que la búsqueda binaria no funcionaría. Un enfoque básico de búsqueda binaria requiere esencialmente que tengas todos los huevos que puedas necesitar para romper (log 2 n), ciertamente más de 2.

La siguiente idea clave, que se relaciona, es darse cuenta de que tienes que tratar el segundo huevo, es muy diferente al primero. Mientras puede “saltar” con el 1er huevo, solo puede mover 1 piso a la vez con el 2do. Por ejemplo, si suelta el primer huevo del piso 10 y se rompe, su próximo movimiento con el segundo huevo debe ser el piso 1, luego el 2, luego el 3, etc., para saber con certeza qué piso debajo de 10 es el piso más alto sin romper huevos

Ahora, si tiro el primer huevo en el piso N, enfrentaré dos escenarios:

  1. Se rompe: en la lógica del párrafo anterior, el segundo huevo se eliminará de los pisos 1, 2, …, N-1. Entonces para este escenario, el número de casos más desfavorable de gotas es N.
  2. No se rompe: ahora me enfrento a un problema recursivo: minimizar el número de gotas usando 2 huevos en un edificio con, efectivamente, 100-N pisos.

La siguiente información útil es darse cuenta de que el número del peor caso para ambos escenarios debe diseñarse para que tenga el mismo valor N, simplemente porque el número de caso más desfavorable para la solución global es el mayor de los dos. Si no son lo mismo, habré optimizado uno a expensas del otro y obtendré un peor resultado en general.

Entonces, para el escenario n. ° 2 anterior, para mi próxima caída (con el primer huevo), omitiré N-1 pisos. Esto se debe a que ya he usado 1 gota, y si la segunda caída termina rompiendo el huevo, mi peor escenario incluirá otras N-2 gotas, para un total de (1 + 1 + N-2) = N gotas.

Recordando, mis pisos de caída serán algo como esto: N, (N + N-1), (N + N-1 + N-2), … Y quiero minimizar N.

En este punto es bastante fácil (y de hecho preferible) que el candidato simplemente pruebe diferentes valores de N, porque deberían tener algunas suposiciones de “sentido común” sobre lo que N debería ser aproximadamente. Si comienzan en el rango 10-20, convergerán muy rápidamente a un mínimo en:

{14, 14 + 13, 14 + 13 + 12, 14 + 13 + 12 + 11, …} o

{14, 27, 39, 50, 60, 69, 77, 84, 90, 95, 99, 96, 97, 98} como una secuencia del peor de los casos, teniendo 14 gotas, que es el mínimo.

Si comienzan bien fuera del rango de 10-20, y no reconocen el gran desequilibrio en cuestión de segundos, eso sería una mala señal.

Uf, los candidatos a la entrevista nunca lo hacen correctamente. En realidad es bastante difícil, ya que la mayoría de la gente comienza por el camino equivocado. Primero, todos asumen la búsqueda binaria, lo cual es incorrecto. Entonces, todos tratan de minimizar la ecuación

(100 / n – 1) + (n – 1)

El primer término indica el número máximo de gotas para el primer huevo, mientras que el segundo término indica el número máximo de gotas para el segundo huevo. La respuesta obvia para n es 10, que le da un máximo de 18. Esto es incorrecto.

En cambio, lo que deberíamos optimizar es tener siempre la misma cantidad máxima de gotas, independientemente del resultado. Cada vez que el huevo no se rompe, deberíamos tener n-1 gotas restantes; y si el huevo se rompe, deberíamos tener n-1 gotas restantes. Esto nos obliga a incrementar nuestro piso cada vez que el primer huevo no se rompa. Si tuviéramos que comenzar en el piso 10, tendríamos que pasar al piso 19, luego al 28, y así sucesivamente. Por lo tanto, los pisos sobre los que deberíamos arrojar el primer huevo (suponiendo que no haya roturas) son:

norte
n + n – 1
n + n – 1 + n – 2
n + n – 1 + n – 2 + n – 3

Que, después de n iteraciones, debe estar por encima de 100. Para simplificar, esto básicamente significa que debemos encontrar el valor mínimo para n tal que SUM (1..n)> = 100.

n (n + 1) / 2> 100 implica n> 13. Por lo tanto, n = 14, tanto nuestro piso inicial como el número de iteraciones requeridas para determinar la fuerza de los huevos.

Lo importante de entender aquí es:

  1. Solo hay una estrategia óptima para cualquier configuración de pisos y huevos.
  2. El número de posibilidades de una gota de huevo es pequeño
  3. Después de que se ha caído un huevo, no tenemos más remedio que aplicar la misma estrategia para los pisos y huevos restantes.

Puedes idear una estrategia solo mirando las posibilidades de tirar un huevo. Tratemos de arrojar desde el piso X.

  1. Si el huevo se rompe, tenemos que controlar los pisos de 1 a X con un huevo menos que el que teníamos ahora.
  2. De lo contrario, el piso debe existir entre TOP y X. Y no hemos perdido ningún huevo.

Entonces, construimos la función para decirnos cuántas gotas tenemos que hacer para N floors y K eggs:
[matemática] F (N, E) \ = \ MIN (MAX (F (X, E-1), F (NX, E)), \ X \ -> \ 1 \ a \ N) [/ math] Base las condiciones son:
[matemáticas] F (1, E) \ = \ E \ y \ F (N, 1) \ = \ N [/ math]

La función anterior explica con precisión cuál debería ser nuestra estrategia. Para cada piso entre 1 y N, encuentre el peor escenario más pequeño. El peor de los casos es una de las dos posibilidades que discutimos anteriormente.

He hecho un video tutorial sobre este problema aquí:

Espero que lo disfrutes 🙂

Tenemos 100 pisos y 2 huevos … y como tiene dos huevos, puede permitirse una sola rotura para identificar el piso más alto.

Probemos este método

Divida los 100 pisos en 2. nos da dos juegos de 50 pisos

es decir, de 1 a 50 plantas y de 51 a 100 plantas

INTENTO 1:

Ve al piso 50 y deja caer el huevo

El resultado puede ser cualquiera de los dos casos

caso 1. Hueveras en el piso 50

Si este es el caso, hemos arrojado el huevo desde un piso más grande que el piso más alto desde donde se puede tirar con seguridad.

Entonces, toma el otro huevo

Ir al piso 1 y soltarlo. Mira si se rompe.

Si no lo hace, incremente el piso uno por uno y suelte el huevo.

Piso 2 … piso 3 … piso 4 …… y así sucesivamente … ..

Tome los pisos como N y continúe incrementando N + 1. Digamos, si el huevo se rompe en el piso N, entonces N-1 es el piso desde donde puede caerse sin romperse.

Ejemplo: Si el huevo se rompe en el piso 45, entonces el 44 es el piso desde donde puede caerse con seguridad.

caso 2. El huevo no se rompe en el piso 50

Si este es el caso, hemos arrojado el huevo desde un piso más bajo que el piso más alto desde donde se puede tirar con seguridad.

Entonces ahora, toma el huevo

Vaya al siguiente piso y deje caer el huevo y continúe incrementando los pisos cada vez, hasta que el huevo se rompa.

Tome los pisos como N y continúe incrementando N + 1. Digamos, si el huevo se rompe en el piso N, entonces N-1 es el piso desde donde puede caerse sin romperse.

Ejemplo: Si el huevo se rompe en el piso 84, entonces 83 es ​​el piso desde donde puede caerse con seguridad.

Esta es una de las formas eficientes de resolver este problema.

Espero haber cumplido tus dudas con mi respuesta.

Sé que hay muchos expertos en ciencias aquí que pueden responder a esta pregunta mucho mejor que yo … Perdóname, solo soy un ingeniero indio. 🙂