Pertanyaan ini baru saja tren pada ulasan kode dan saya pikir Anda mungkin suka itu diadaptasi sebagai tantangan codegolf:
Anda diberi daftar x rumah kosong yang direpresentasikan sebagai boolean. Setiap hari, rumah-rumah bersaing dengan yang berdekatan. 1 mewakili rumah "aktif" dan 0 mewakili rumah "tidak aktif". Jika tetangga di kedua sisi rumah yang diberikan keduanya aktif atau keduanya tidak aktif, maka rumah itu menjadi tidak aktif pada hari berikutnya. Kalau tidak, ia menjadi aktif.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Misalnya, jika kita memiliki sekelompok tetangga [0, 1, 0] maka rumah di [1] akan menjadi 0 karena kedua rumah di kiri dan kanan keduanya tidak aktif. Sel-sel di kedua ujungnya memeriksa sisi yang berlawanan juga, sehingga tetangga pada indeks 0 berada pada indeks length-1
dan indexn1 dan sebaliknya. Bahkan setelah memperbarui sel, Anda harus mempertimbangkan status sebelumnya ketika memperbarui yang lain sehingga informasi status setiap sel diperbarui secara bersamaan.
Fungsi ini mengambil array status dan sejumlah langkah dan harus menampilkan status rumah setelah jumlah langkah yang diberikan.
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]
Ambil daftar dan langkah sesuka Anda dan hasilkan daftar yang dihasilkan melalui I / O default . Celah standar dilarang. Ini codegolf, jawaban terpendek dalam byte menang!
[0, 1, 0, 0, 1, 0, 1, 1]
?