Hay una pregunta en este sitio que es similar a esta pregunta, pero he agregado un giro.
Tiene tres entradas, el número de personas en el círculo n , la k -ésima persona contada en cada paso y la q -ésima persona que sobrevive. Las personas en el círculo están numeradas del 1 al n .
Por ejemplo, en un círculo de 20 personas, la vigésima persona que sobrevive es la primera persona eliminada, el sobreviviente 19 es la segunda persona eliminada y así sucesivamente. Normalmente, el problema de Josephus es determinar la última persona eliminada, aquí llamada el primer sobreviviente.
Escribir el programa más corto o función que, con esos tres entradas, devuelve el número de la q persona -ésimo para sobrevivir.
Si hay algún problema con la claridad, hágamelo saber.
Algunos ejemplos:
>>> josephus(20, 3, 9)
4
>>> josephus(4, 3, 1)
1
>>> josephus(100, 9, 12)
46
Editar: suponga que todas las entradas son válidas. Es decir, nadie pedirá 0 o cualquier número negativo y nadie preguntará por el vigésimo sobreviviente en un círculo de 5 personas (es decir, 1 ≤ q ≤ n)
Editar: aceptaré una respuesta a la medianoche UTC + 7 al comienzo del 2 de diciembre.
q=1esto es exactamente lo mismo que la pregunta de Josefo vinculada, ¿verdad?
