Bu soru sadece kod gözden geçirme eğilimi ve bir codegolf meydan okuma olarak adapte gibi olabilir düşündüm:
Boolean olarak temsil edilen x evlerinin boş olmayan bir listesi verilir. Her gün evler bitişiklerle rekabet ediyor. 1, "aktif" bir evi ve 0, "aktif olmayan" bir evi temsil eder. Belirli bir evin her iki yanındaki komşular ya aktif ya da her ikisi de aktif değilse, o ev ertesi gün pasif hale gelir. Aksi takdirde aktif olur.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Örneğin, bir grup komşumuz olsaydı [0, 1, 0], o zaman [1] 'deki ev 0 olur, çünkü hem sol hem de sağdaki evin ikisi de aktif değildir. Her iki uçtaki hücreler de karşı tarafı kontrol eder, böylece indeks length-1
0'daki komşular indeks ve indexn1'de bulunur veya bunun tersi de geçerlidir. Hücreyi güncelledikten sonra bile, her hücrenin durum bilgisinin aynı anda güncellenmesi için diğerlerini güncellerken önceki durumunu dikkate almanız gerekir.
İşlev, durum dizisini ve bir dizi adımı alır ve verilen adım sayısından sonra evlerin durumunu çıkarmalıdır.
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]
İstediğiniz listeyi ve adımları uygulayın ve sonuç listesini varsayılan G / Ç yoluyla çıktılayın . Standart boşluklar yasaktır. Bu codegolf, baytlarda en kısa cevap kazanıyor!
[0, 1, 0, 0, 1, 0, 1, 1]
mı?