#41 ライツアウト1
● 問題
点灯ゲームと言われているゲームです。問題が表示されません。
●は消灯,○は点灯です。
選択したところとその両隣の点灯・消灯が入れ替わります。
うまく選択して,すべてを点灯させれば完成です。
ライトは全部で4つ
左から順に1,2,3,4で指定します。
○○○●
どこを変えますか?2
●●●●
どこを変えますか?1
○○●●
どこを変えますか?4
○○○○
import random
question = ['','','','']
times = 0
for i in question:
if random.randint(0,1) == 1:
i = '○'
else:
i = '●'
print(''.join(question))
while question.count('○') != 4:
times += 1
pos = input('どこを変えますか?')
num = int(pos)-1
if 0 <= num < 4:
if num-1 >= 0:
if question[num-1] == '●':
question[num-1] = '○'
else:
question[num-1] = '●'
if num+1 < 4:
if question[num+1] == '●':
question[num+1] = '○'
else:
question[num+1] = '●'
if question[num] == '●':
question[num] = '○'
else:
question[num] = '●'
print(''.join(question))
print(str(times)+'回で完成!')
● 解答
変更したのは3行です。
for i in question: で配列から要素を順番に取り出していますが,i = '○' では要素を変更することができません。
question[1] = '○' のように,配列の要素を番号(添え字といいます)で指定して,変更するようにします。
import random
question = ['','','','']
times = 0
for i in range(4): #変更
if random.randint(0,1) == 1:
question[i] = '○' #変更
else:
question[i] = '●' #変更
print(''.join(question))
while question.count('○') != 4:
times += 1
pos = input('どこを変えますか?')
num = int(pos)-1
if 0 <= num < 4:
if num-1 >= 0:
if question[num-1] == '●':
question[num-1] = '○'
else:
question[num-1] = '●'
if num+1 < 4:
if question[num+1] == '●':
question[num+1] = '○'
else:
question[num+1] = '●'
if question[num] == '●':
question[num] = '○'
else:
question[num] = '●'
print(''.join(question))
print(str(times)+'回で完成!')
ライトの数を4つから増やした場合のプログラムに書きかえてみましょう。
#Python #プログラミング
この記事が気に入ったらサポートをしてみませんか?