python - 拯救基督徒

问题描述:有15个基督徒和15个非基督徒在海上遇险,为了能让一部分人活下来不得不将其中15个人扔到海里。有人想了一个办法就是让大家围成一个圈,由某个人开始从1报数,报到9的人就扔进海里,他后面的人接着从1开始报数,返回如此至扔掉15人。请问要如何安排基督徒的站位才能让所有基督徒幸免遇难?

class Problem:
    def __init__(self, isd:bool):
        self.isd = isd
        self.next = None


h = Problem(False)
k = h
for _ in range(1, 31):
    n = Problem(False)
    k.next = n
    k = n
k.next = h

m = 0
k = h
while m < 15:
    for _ in range(0, 9):
        k = k.next
    k.isd = True
    k = k.next
    m += 1

for _ in range(30):
    print(_ + 1, h.isd) # True 即死掉的非基督徒
    h = h.next

相关推荐