# Josephus game, very object oriented # who will be counted out last? # (do not use large number of men - will give stack overflow) class Man: def __init__(self,name,k): self.name = name # my name self.k = k # counting stepsize def kill(self): self.next.last = self.last # link next person to the one before me self.last.next = self.next # link person before me to my follower print self.name,"is out" def count(self,i): if i survivor def game(n,k): men = [] # create group of men, name them 1,2,3,4... for m in range(n): men.append(Man(m+1,k)) # link everyone to both neighbors for m in range(n): men[m].next = men[(m+1)%n] men[m].last = men[(m-1)%n] # first man starts counting men[0].count(1)