--- title: Josephus problem id: 5a23c84252665b21eecc7ec5 challengeType: 5 videoUrl: '' localeTitle: Проблема Иосифа --- ## Description
Проблема Джозефуса - математическая головоломка с мрачным описанием: $ n $ заключенные стоят по кругу, последовательно пронумерованные от $ 0 $ до $ n-1 $. Палач ходит по кругу, начиная с заключенного $ 0 $, удаляя каждого $ k $ -ного заключенного и убивая его. По мере того как процесс продолжается, круг становится все меньше и меньше, пока остается только один заключенный, который затем освобождается. Например, если есть $ n = 5 $ заключенных и $ k = 2 $, то порядок, в котором заключенные будут убиты (назовем его «последовательностью убийства»), будет 1, 3, 0 и 4, а оставшийся в живых будет # 2. Учитывая любые $ n, k> 0 $ , выясните, кто из заключенных будет последним выжившим. В одном из таких инцидентов было 41 заключенный, и каждый 3- й заключенный был убит ( $ k = 3 $ ). Среди них было умное имя Джофа, который разработал проблему, стоял в выжившем положении и продолжал рассказывать историю. Каким он был? Напишите функцию, которая берет начальное число заключенных и «k» в качестве параметра и возвращает число заключенного, который выживает.
## Instructions
## Tests
```yml tests: - text: josephus должен быть функцией. testString: 'assert(typeof josephus=="function","josephus should be a function.");' - text: 'josephus(30,3) должен вернуть число.' testString: 'assert(typeof josephus(30,3)=="number","josephus(30,3) should return a number.");' - text: 'josephus(30,3) должен вернуться 29 .' testString: 'assert.equal(josephus(30,3),29,"josephus(30,3) should return 29.");' - text: 'josephus(30,5) должен вернуться 3 .' testString: 'assert.equal(josephus(30,5),3,"josephus(30,5) should return 3.");' - text: 'josephus(20,2) должен вернуться 9 .' testString: 'assert.equal(josephus(20,2),9,"josephus(20,2) should return 9.");' - text: 'josephus(17,6) должен вернуться 2 .' testString: 'assert.equal(josephus(17,6),2,"josephus(17,6) should return 2.");' - text: 'josephus(29,4) должен вернуться 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 ```