このシナリオで板を歩く名前のリストから生存者を決定するコードがあります。リストの最後の人が生き残ります。このコードは次のとおりです。
names = ["Andrew", "Brenda", "Craig", "Deidre", "Edward", "Felicity", "Greg", "Harriet"]
def survivor(names, step):
Next = step - 1
while len(names) > 1:
names.pop(Next)
Next = Next + step
Next = (Next - 1) % len(names)
print names
return names[0]
これは、ステップに入ったものに基づいて生存者を返すように機能しますが、人が生き残るためにステップの最小の N を計算する必要もあります。たとえば、グレッグの場合は 3、アンドリューの場合は 2 です。
私がこれのために試したコードは次のとおりです。
assert name in names
for step in survivor(names, step):
if survivor == name:
return step
しかし、割り当て前に参照されたローカル変数ステップまたはグローバルステップが定義されていないと言い続けます。
と
assert name in names
for step in itertools.count(1):
if survivor(names, step) == name:
return step
しかし、これは戻ります
[「ブレンダ」、「クレイグ」、「デイドル」、「エドワード」、「フェリシティ」、「グレッグ」、「ハリエット」]
[「クレイグ」、「デイドル」、「エドワード」、「フェリシティ」、「グレッグ」、「ハリエット」]
[「デイドル」、「エドワード」、「フェリシティ」、「グレッグ」、「ハリエット」]
[「エドワード」、「フェリシティ」、「グレッグ」、「ハリエット」]
[「フェリシティ」、「グレッグ」、「ハリエット」]
[「グレッグ」、「ハリエット」]
[「ハリエット」]
これは私が欲しいものではありません
誰でも私がこれを解決するのを手伝ってくれますか?