--- title: Josephus problem id: 5a23c84252665b21eecc7ec5 challengeType: 5 videoUrl: '' localeTitle: Problema de Josefo --- ## Description
El problema de Josephus es un rompecabezas matemático con una descripción sombría: los prisioneros de $ n $ están parados en un círculo, numerados secuencialmente de $ 0 $ a $ n-1 $. Un verdugo camina a lo largo del círculo, comenzando desde el prisionero $ 0 $, sacando a cada $ k $ -th prisionero y matándolo. A medida que avanza el proceso, el círculo se hace cada vez más pequeño, hasta que solo queda un prisionero, quien es liberado. Por ejemplo, si hay $ n = 5 $ prisioneros y $ k = 2 $, el orden en que se mata a los prisioneros (llamémoslo la "secuencia de matanza") será 1, 3, 0 y 4, y el sobreviviente será el # 2. Dado cualquier $ n, k> 0 $ , averigüe qué prisionero será el sobreviviente final. En uno de esos incidentes, hubo 41 prisioneros y cada prisionero fue asesinado ( $ k = 3 $ ). Entre ellos se encontraba un ingenioso cap, Josephus, que resolvió el problema, se quedó en la posición de sobreviviente y sobrevivió para contarlo. ¿Qué número fue? Escriba una función que tome el número inicial de prisioneros y 'k' como parámetro y devuelva el número del prisionero que sobrevive.
## Instructions
## Tests
```yml tests: - text: josephus debería ser una función. testString: 'assert(typeof josephus=="function","josephus should be a function.");' - text: 'josephus(30,3) debe devolver un número.' testString: 'assert(typeof josephus(30,3)=="number","josephus(30,3) should return a number.");' - text: 'josephus(30,3) debe devolver 29 .' testString: 'assert.equal(josephus(30,3),29,"josephus(30,3) should return 29.");' - text: 'josephus(30,5) debe devolver 3 .' testString: 'assert.equal(josephus(30,5),3,"josephus(30,5) should return 3.");' - text: 'josephus(20,2) debe devolver 9 .' testString: 'assert.equal(josephus(20,2),9,"josephus(20,2) should return 9.");' - text: 'josephus(17,6) debe devolver 2 .' testString: 'assert.equal(josephus(17,6),2,"josephus(17,6) should return 2.");' - text: 'josephus(29,4) debe devolver 2 .' testString: 'assert.equal(josephus(29,4),2,"josephus(29,4) should return 2.");' ```
## Challenge Seed
```js function josephus (init, kill) { // Good luck! } ```
## Solution
```js // solution required ```