Sobre o problema de Josephus

A macro simula várias rodadas do jogo, até sobrar só um.

Link para download.

Um array para armazenar quem está vivo ou não:

ReDim arrMorto(1 To n)

Rodar isso n-1 vezes

For i = 1 To n – 1 ‘Para cada rodada

    count = 0

    While count < passo

        ‘A formula complicada abaixo é para considerar quando a contagem dá a volta no círculo e volta para o primeiro

        pos = ((pos + 1 – 1) Mod (n)) + 1

       ‘só incrementa o contador se a pessoa na posição estiver viva

        If arrMorto(pos) = 0 Then

            count = count + 1

        End If

      ‘A pessoa que estiver exatamente na posição escolhida para ser eliminada, executa a instrução abaixo

        If count = passo Then

            arrMorto(pos) = 1 ‘A pessoa nesta posição morre

            colore (pos) ‘subrotina para colorir a bolinha

            timeout (0.5) ‘espera 0,5 segundo para criar efeito de animação

        End If

    Wend

Next i


Ideias técnicas com uma pitada de filosofia: https://ideiasesquecidas.com

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s