#Voici le problème de décimation de Josephe :
#Josephe et 40 nobles doivent se mettre en cercle et toutes les 3 personnes,
#chacun se fait tuer soit, dans l'ordre, les personnes 3, 6, 9, 12, etc.
#Ce programme détermine l'ordre des personnes supprimées
#p=pas de la décimation (3 ici), n=nombre de personnes (41 ici)

def josephe(n,p):
    rg=0
    initial,ordre=list(range(1,n+1)),[]
    while len(initial)>0:
        rg=(rg+p-1)%len(initial)
        ordre.append(initial.pop(rg))
    return ordre

n,p=5,7
L=josephe(n,p)
print('Ordre de décimation pour n={} et p={}:'.format(n,p),L)
#pour savoir dans quel ordre seront supprimés les personnes
passage=n*[0]
for i in range(n): passage[L[i]-1]=i+1
print('Ordre de passage:',passage)

