คำถามนี้มีแนวโน้มที่จะทบทวนรหัสและฉันคิดว่าคุณอาจชอบมันดัดแปลงเป็นความท้าทาย codegolf:
คุณได้รับรายชื่อบ้าน 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]
ใช่หรือไม่