Un grupo de n prisioneros se encuentra en círculo esperando su ejecución. Comenzando desde una posición arbitraria(0), el verdugo mata a cada k-ésima persona hasta que queda una persona en pie, quien obtiene la libertad (consulta los ejemplos).
Crea una función que reciba 2 argumentos — el número de personas que serán ejecutadas n y el tamaño del paso k— y devuelva la posición original (índice) de la persona que sobrevive.
whoGoesFree(9, 2) ➞ 2
// Prisoners = [0, 1, 2, 3, 4, 5, 6, 7, 8]
// Executed people replaced by - (a dash) for illustration purposes.
// 1st round of execution = [0, -, 2, -, 4, -, 6, -, 8] -> [0, 2, 4, 6, 8]
// 2nd round = [-, 2, -, 6, -] -> [2, 6] # 0 is killed in this round because it's beside 8 who was skipped over.
// 3rd round = [2, -]
whoGoesFree(9, 3) ➞ 0
// [0, 1, 2, 3, 4, 5, 6, 7, 8]
// [0, 1, -, 3, 4, -, 6, 7, -] -> [0, 1, 3, 4, 6, 7]
// [0, 1, -, 4, 6, -] -> [0, 1, 4, 6]
// [0, 1, -, 6] -> [0, 1, 6]
// [0, -, 6] -> [0, 6]
// [0, -] -> [0]Consulta la pestaña Resources para obtener más información.