Instruções

O problema de Josephus

O problema de Josephus é um desafio de matemática com uma descrição macabra: $n$ prisoneiros estão de pé, em círculo, sequencialmente numerados de $0$ a $n-1$. Um carrasco caminha pelo círculo, começando pelo prisioneiro $0$, removendo cada $k$-ésimo prisioneiro e matando-o. À medida que o processo avança, o círculo torna-se cada vez menor, até ficar apenas um prisioneiro, que é depois libertado. Por exemplo, se houver $n=5$ prisioneiros e $k=2$, a ordem em que os prisioneiros são mortos (vamos chamá-la de "sequência de morte") será 1, 3, 0 e 4. O sobrevivente, então, será o nº 2. Dado qualquer $n, sendo k > 0$, descubra qual prisioneiro será o sobrevivente ao final. Em um incidente deste tipo, havia 41 prisoneiros e o 3<sup>o</sup> prisioneiro na sequência era morto ($k=3$). Entre eles, havia um homem inteligente, chamado Josephus, que desvendou o problema, ficou na posição do sobrevivente e viveu para contar a história. Qual era o número dele?

O que fazer:

Escreva uma função que recebe o número inicial de prisioneiros e k como parâmetros, devolvendo o número do prisioneiro que sobrevive.

Critérios de Aceitação:

Testes:

  • `josephus` deve ser uma função.
  • `josephus(30,3)` deve retornar um número.
  • `josephus(30,3)` deve retornar `28`.
  • `josephus(30,5)` deve retornar `2`.
  • `josephus(20,2)` deve retornar `8`.
  • `josephus(17,6)` deve retornar `1`.
  • `josephus(29,4)` deve retornar `1`.

Console