タスクがあります:
私は0、1、2、...、1023の番号が付いたライトのボードを持っています。
各ライトはオンまたはオフのいずれかになります。すべてのライトは最初はオフになっています。ステップ1:
0から始まるすべてのライトを反転します
。この時点で、すべてのライトがオンになっています。ステップ2:0から始めて、毎秒ライトを反転
します。この時点で、ライト0、2、4、6、8、...はオフになっています。
ライト1、3、5、7、9、...はまだ点灯しています。ステップ3:0から始めて3つおきにライトを反転し
ます。したがって、ライト0、3、6、9、12、...
を反転します。つまり、ライトがオンの場合はオフに反転します。
ライトがオフの場合は、オンにします。..。
ステップ1023:
0から始めて1023番目のライトごとに反転し
ます。したがって、0と1023を反転します。質問:この時点で、どのライトがオンで、どれがオフですか?
そしてここに私のコードがあります:
class Light:
def __init__(self):
self.state = 'OFF'
def turn_on(self):
self.state = 'ON'
def turn_off(self):
self.state = 'OFF'
def flip(self):
if self.state == 'OFF':
self.state = 'ON'
else:
self.state = 'OFF'
def __str__(self):
return str(self.state)
class LightBoard:
def __init__(self, num_lights):
self.light = [Light()] * num_lights
def step(self,i):
for element in self.light:
if self.light.index(element) % i == 0:
self.light[self.light.index(element)] = self.light[self.light.index(element)].flip()
def all_steps(self):
i = 0
while i != len(self.light):
self.light = self.light.step(self.light, i)
i += 1
def __str__(self):
return str(self.light)
Pythonビジュアライザーを使用したところ、LightBoardのall_stepsが機能しないことがわかりました。
AttributeError:'list'オブジェクトに属性'step'がありません
私はそれを修正することに迷っています。
私のコードの修正/コメントの提供を手伝ってください。ありがとうございました!