そこで私は、有名な Hot Pocket/Josephus の実行問題をシミュレートするために作成者がキューを実装する、データ構造 Python を使用した問題解決を読んでいました。ただし、何度試しても、プログラムによって計算された最後の生存者が私の計算と一致しないため、この実装は正しくないと思います。たとえば、入力 ([0,1,2,3,4],2)) の場合、出力は 1 ではなく 3 であるべきではありませんか? (最初に 2 を削除するため、パターンに従うと、実行は 2,4,1,0,3 で、3 が最後の生存者となる必要があります。) しかし、プログラムの出力は 1 です。
完全な実装は次のとおりです。
class Queue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def enqueue(self, item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
def hotPotato(namelist, num):
simqueue = Queue()
for name in namelist:
simqueue.enqueue(name)
while simqueue.size() > 1:
for i in range(num):
simqueue.enqueue(simqueue.dequeue())
simqueue.dequeue()
return simqueue.dequeue()
print(hotPotato(([0,1,2,3,4],2)))
それで、私は何を間違っていますか?どんな助けでも大歓迎です。前もって感謝します!