Node Network
เขียนแอสเซมบลีขนาดสั้นลงในกริดของ CPU ที่ส่งค่าให้เพื่อนบ้าน เพื่อแปลงสตรีมอินพุตให้เป็นเป้าหมายโดยไม่ให้เกิดการติดขัด
วิธีเล่น
คุณกำลังเขียนโปรแกรมให้กริดของคอมพิวเตอร์ขนาดจิ๋ว แต่ละโหนดรันชุดคำสั่งสั้นๆ ของตัวเองและสื่อสารได้เฉพาะกับเพื่อนบ้านที่อยู่ติดกันเท่านั้น โดยส่งค่าผ่านพอร์ต ดังนั้นตัวเลขที่ต้องการข้ามกริดต้องถูกส่งต่อทีละโหนดด้วยมือ
- แต่ละโหนดมีตัวสะสม (Accumulator) และคำสั่งพื้นฐานไม่กี่อย่าง: ย้ายค่า, บวก, ลบ, กระโดด
- โหนดสามารถอ่านหรือเขียนข้อมูลจากเพื่อนบ้านที่อยู่บน ล่าง ซ้าย หรือขวา หรือจากสตรีมอินพุตและเอาต์พุต
- พอร์ตจะบล็อก (Block) โหนดที่เขียนข้อมูลไปทางขวาจะรอจนกว่าโหนดที่อยู่ทางขวาจะอ่านข้อมูลจากด้านซ้ายของมัน
- นั่นหมายความว่าโหนดสองตัวต้องประสานงานกันให้ตรงเวลา ไม่ใช่แค่ตรงค่า
- หากครบหนึ่งรอบ (Cycle) โดยไม่มีใครก้าวหน้าและยังมีใครบางคนรออยู่ กริดจะเกิดภาวะติดขัด (Deadlock)
- ปริศนาจะสำเร็จเมื่อสตรีมเอาต์พุตตรงกับเป้าหมายที่เลเวลนั้นกำหนด
การควบคุม
- เดสก์ท็อป: พิมพ์โค้ดลงในกล่องข้อความของแต่ละโหนด เลือกเลเวลจากเมนูแบบเลื่อนลง จากนั้นกด Run
- มือถือและแท็บเล็ต: เล่นได้ แต่แนะนำให้ใช้คีย์บอร์ดภายนอกสำหรับการเขียนโค้ดอย่างมาก
โหมดเกม
- รายวัน: ปริศนาเดียวสำหรับทุกคน สร้างจากวันที่ของวันนี้
- ฝึกซ้อม: สลับอินพุตสุ่มใหม่เรื่อยๆ ด้วยปุ่ม New
เคล็ดลับและกลยุทธ์
- ออกแบบเส้นทางก่อนคำนวณ ส่วนใหญ่แล้วความล้มเหลวเกิดจากค่าที่ไปไม่ถึงจุดหมาย ไม่ใช่ผลรวมที่ผิด
- โหนดสองตัวที่รอซึ่งกันและกันคือภาวะติดขัดแบบคลาสสิก หากทั้งคู่เขียนข้อมูลเข้าหากันก่อนที่ใครจะอ่าน ไม่มีใครจะขยับได้เลย
- พยายามให้ข้อมูลไหลไปทางเดียวเท่าที่จะทำได้ กริดที่มีทิศทางชัดเจนจะวิเคราะห์ได้ง่ายกว่ากริดที่มีค่าวิ่งสวนทางกัน
- ใช้โหนดเป็นเพียงตัวส่งต่อ (Relay) เมื่อจำเป็น การส่งค่าผ่านอย่างเดียวถือเป็นหน้าที่ที่ถูกต้องและมักจำเป็น
- ดูที่โหนดที่ถูกบล็อก ไม่ใช่คำตอบที่ผิด เมื่อเอาต์พุตหยุดนิ่ง สิ่งที่เป็นประโยชน์คือโหนดไหนกำลังรอและรอใคร
สิ่งที่คุณจะได้เรียนรู้
Node Network คือเกมปริศนาโปรแกรมแบบขนาน (Parallel Programming) เกี่ยวกับ การส่งข้อความและการหลีกเลี่ยงภาวะติดขัด (Deadlock) ในเมชของโปรเซสเซอร์
- ทักษะ: การโปรแกรมแบบขนานและพร้อมกัน (Concurrent), การส่งข้อความ, การหลีกเลี่ยงภาวะติดขัด
- เหมาะสำหรับ: ประมาณเกรด 9–12 (อายุ 14 ปีขึ้นไป)
- สำหรับผู้ปกครองและครู: เรียนรู้เรื่องความพร้อมกัน (Concurrency) และภาวะติดขัด (Deadlock) ผ่านการลงมือทำจริง
ต้นกำเนิด
ตารางของคอมพิวเตอร์ขนาดเล็กมาก แต่ละเครื่องรันรายการคำสั่งสั้น ๆ ของตัวเอง และพูดคุยได้เฉพาะกับเพื่อนบ้านที่อยู่ติดกันโดยตรง คือ TIS-100 ของ Zachtronics เดือนกรกฎาคม 2015 ซึ่งตั้งปริศนาไว้บนเครื่องสมมติยุค 1970 ที่เสียหาย
ข้อจำกัดที่สอนอยู่เป็นของจริงและเป็นศูนย์กลางของการคำนวณแบบขนาน: เมื่อไม่มีหน่วยความจำร่วม ค่าที่ต้องข้ามตารางต้องถูกส่งต่อด้วยมือทีละโหนด ผ่านการส่งผ่านข้อความ
และการส่งต่อด้วยมือคือวิธีที่คุณพบกับภาวะติดตาย สองโหนดต่างรออีกฝ่าย ทั้งคู่หยุดนิ่งตลอดไป มันเป็นบั๊กที่อธิบายบนไวต์บอร์ดไม่ได้จริง ๆ เพราะความยากทั้งหมดคือแต่ละโหนดทำงานถูกต้องเมื่อพิจารณาทีละตัว
เกี่ยวกับ Node Network
Node Network คือเกมปริศนาโปรแกรมแบบขนานเกี่ยวกับ การส่งข้อความและการหลีกเลี่ยงภาวะติดขัด (Deadlock) ในเมชของโปรเซสเซอร์ เป็นเกมเบราว์เซอร์ต้นฉบับที่สร้างโดย PlayPendium โดยไม่เสียค่าใช้จ่าย
เรียกดูเกมทั้งหมด →