この質問は、コードレビューで傾向が出てきたばかりで、コードゴルフのチャレンジとして採用した方がいいと思いました。
ブール値として表されたx個の家の空でないリストが表示されます。毎日、家は隣接する家と競争しています。1は「アクティブ」な家を表し、0は「非アクティブ」な家を表します。特定の家の両側の隣人が両方ともアクティブまたは両方とも非アクティブである場合、その家は翌日に非アクティブになります。それ以外の場合はアクティブになります。
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
たとえば、隣人のグループ[0、1、0]がある場合、[1]の家は、左側と右側の家が両方とも非アクティブであるため、0になります。両端のセルは反対側もチェックするため、インデックス0の隣接length-1
セルはインデックスとindexn1にあり、その逆も同様です。セルを更新した後でも、他のセルを更新するときは以前の状態を考慮して、各セルの状態情報が同時に更新されるようにする必要があります。
この関数は、状態の配列といくつかのステップを受け取り、指定されたステップ数の後の家の状態を出力する必要があります。
input: states = [1, 0, 0, 0, 0, 1, 0, 0], steps = 1
output should be [0, 1, 0, 0, 1, 0, 1, 1]
input: states = [1, 1, 1, 0, 1, 1, 1, 1], steps = 2
intermediate state= [0, 0, 1, 0, 1, 0, 0, 0]
output should be [0, 1, 0, 0, 0, 1, 0, 0]
input: states = [1], steps=1
output: states= [0]
リストとステップを自由に実行し、デフォルトのI / Oを介して結果のリストを出力します。標準の抜け穴は禁止されています。これはcodegolfで、バイト単位の最短の回答です。
[0, 1, 0, 0, 1, 0, 1, 1]
?