หุ่นยนต์เคลื่อนที่คล้ายชีวิตเป็นหุ่นยนต์อัตโนมัติที่คล้ายกับเกมแห่งชีวิตของคอนเวย์ซึ่งทำงานบนกริดขนาดใหญ่ (ในทางทฤษฎี) โดยที่แต่ละเซลล์มี 8 เพื่อนบ้านอย่างแน่นอนและเป็นหนึ่งใน 2 สถานะคือมีชีวิตและตาย .
อย่างไรก็ตามเวอร์ชัน Like-like เหล่านี้มีความแตกต่างกันในวิธีการที่สำคัญ: กฎสำหรับเซลล์ที่กำหนดให้มีชีวิตอยู่และกฎสำหรับเซลล์ที่กำหนดให้อยู่รอดในรุ่นต่อไป
ตัวอย่างเช่น Game of Life คลาสสิคใช้กฎB3/S23
ซึ่งหมายความว่าจะต้องใช้เซลล์ที่มีชีวิต 3 เซลล์เพื่อสร้างเซลล์ใหม่และทั้ง 2 หรือ 3 เพื่อนบ้านที่มีชีวิตอยู่รอด สำหรับความท้าทายนี้เราจะสมมติว่าเพื่อนบ้านไม่รวมตัวมันเองดังนั้นแต่ละเซลล์มี 8 เพื่อนบ้านอย่างแน่นอน
งานของคุณคือกำหนดค่าเริ่มต้นกฎการเกิดกฎการเอาชีวิตรอดและจำนวนเต็มบวก (จำนวนรุ่นที่จะทำงาน) จำลองหุ่นยนต์เสมือนชีวิตโดยใช้กฎเหล่านั้นสำหรับจำนวนรุ่นที่กำหนดในรหัสสั้นที่สุดเท่าที่จะทำได้ . การกำหนดค่าเริ่มต้นจะเป็นอาร์เรย์เมทริกซ์จตุรัส / 2 มิติหรือสตริงหลายบรรทัดคุณสามารถเลือกได้ ผู้อื่นอาจได้รับในรูปแบบและวิธีการที่สมเหตุสมผล
ตัวอย่างเช่นถ้ากฎการเกิดคือ12345678
(เพื่อนบ้านที่มีชีวิต) กฎการเอาชีวิตรอด2357
และการกำหนดค่าเริ่มต้นคือ
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
อีกสองชั่วอายุคนจะเป็น
Generation 1: Generation 2:
0 0 0 0 0 1 1 1 1 1
0 1 1 1 0 1 1 0 1 1
0 1 0 1 0 1 0 1 0 1
0 1 1 1 0 1 1 0 1 1
0 0 0 0 0 1 1 1 1 1
หากจำนวนรุ่นที่ได้รับคือ 10 เอาต์พุตจะเป็นบางสิ่งตามแนวของ
0 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0
คุณไม่จำเป็นต้องจัดการกับการเปลี่ยนแปลงที่เกิดขึ้นนอกขอบเขตที่กำหนดโดยเมทริกซ์อินพุตอย่างไรก็ตามเซลล์ทั้งหมดที่อยู่นอกเมทริกซ์จะเริ่มตาย ดังนั้นอินพุตเมทริกซ์อาจมีขนาดใดก็ได้จนถึงค่าสูงสุดที่ภาษาของคุณสามารถรองรับได้ คุณไม่จำเป็นต้องเอาท์พุทบอร์ดระหว่างรุ่น
นี่คือรหัสกอล์ฟเพื่อให้ได้รหัสที่สั้นที่สุดชนะ
กรณีทดสอบ
สิ่งเหล่านี้ใช้B/S
สัญลักษณ์เพื่อระบุกฎที่ใช้
B2/S2
,, generations = 100
การกำหนดค่า:
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
เอาท์พุท:
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
B1357/S2468
,, generations = 12
การกำหนดค่า:
1 0 1 0 1 0
0 1 1 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
1 1 1 1 1 0
0 1 1 0 0 1
เอาท์พุท:
0 1 0 0 0 0
0 1 1 1 1 0
0 1 0 1 1 0
1 1 1 0 0 0
0 0 1 1 1 0
0 1 1 0 0 0
หากคุณต้องการสร้างกรณีทดสอบเพิ่มเติมคุณสามารถใช้ตัวจำลองที่ยอดเยี่ยมนี้ได้ โปรดตรวจสอบให้แน่ใจว่าได้ จำกัด ขนาดกระดาน