Como parte de una solicitud de empleo reciente, se me pidió que codificara una solución a este problema.Eliminación de cada 'kth' persona de un círculo. Encuentre la última persona restante
Dada,
- n = número de personas de pie en un círculo.
- k = número de personas a contar de nuevo cada vez
Cada persona se le da un identificador único (incremento). Comenzando con la primera persona (la identificación más baja), empiezan a contar de 1 a k.
La persona en k se retira y el círculo se cierra. La siguiente persona restante (siguiendo a la persona eliminada) reanuda el conteo en 1. Este proceso se repite hasta que solo queda una persona, el ganador.
La solución debe proporcionar:
- el id de cada persona en el orden en que se retiran del círculo
- el id del ganador.
limitaciones de rendimiento:
- usar la menor cantidad de memoria posible.
- Haga que la solución se ejecute lo más rápido posible.
Recordé hacer algo similar en mi curso de CS desde hace años, pero no pude recordar los detalles en el momento de esta prueba. Ahora me doy cuenta de que es un problema clásico bien conocido con múltiples soluciones. (No voy a mencionarlo por su nombre ya que algunos pueden simplemente 'wikipedia' una respuesta).
Ya presenté mi solución, así que no estoy buscando gente que me la responda. Lo proporcionaré un poco más tarde una vez/si otros han proporcionado algunas respuestas.
Mi objetivo principal al hacer esta pregunta es ver cómo mi solución se compara con otras según los requisitos y las limitaciones.
(Tenga en cuenta los requisitos de cuidado ya que creo que pueden invalidar algunas de las soluciones 'clásicas'.)
¿Tenemos que taparnos los ojos y cantar un poco de rima mientras lo hacemos? ;-) – Spudley
@Tony, ¿qué le parece dar una respuesta? Si el problema de FizzBuzz es difícil para muchos desarrolladores, no veo cómo es 'estúpidamente fácil'. – Ash
"No lo mencionaré por su nombre" - ¿Estoy en lo cierto al pensar que el nombre comienza con J? Y que es (como, por ejemplo, tantos problemas de Euler) susceptible de solución mediante métodos matemáticos, en lugar de computacionales. – AakashM