คำถามติดแท็ก chess

27
มีอัลกอริทึมที่สมบูรณ์แบบสำหรับหมากรุกหรือไม่? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการเมื่อปีที่แล้ว ปรับปรุงคำถามนี้ เมื่อเร็ว ๆ นี้ฉันกำลังสนทนากับบุคคลที่ไม่ได้เขียนโค้ดเกี่ยวกับความเป็นไปได้ของคอมพิวเตอร์หมากรุก ฉันไม่ได้เชี่ยวชาญในทฤษฎี แต่คิดว่าฉันรู้เพียงพอ ฉันแย้งว่าไม่สามารถมีเครื่องจักรทัวริงที่กำหนดได้ซึ่งจะชนะหรือนิ่งในหมากรุกเสมอไป ฉันคิดว่าแม้ว่าคุณจะค้นหาพื้นที่ทั้งหมดของการเคลื่อนไหวของผู้เล่น 1/2 ชุดทั้งหมดการเคลื่อนไหวเพียงครั้งเดียวที่คอมพิวเตอร์ตัดสินใจในแต่ละขั้นตอนนั้นขึ้นอยู่กับฮิวริสติก ด้วยพื้นฐานของฮิวริสติกจึงไม่จำเป็นต้องเอาชนะการเคลื่อนไหวทั้งหมดที่คู่ต่อสู้ทำได้ เพื่อนของฉันคิดในทางตรงกันข้ามว่าคอมพิวเตอร์จะชนะหรือเสมอกันหากไม่เคยทำ "ผิดพลาด" (คุณจะกำหนดอย่างนั้นหรือไม่) อย่างไรก็ตามในฐานะโปรแกรมเมอร์ที่ได้รับ CS ฉันรู้ดีว่าแม้แต่ทางเลือกที่ดีของคุณ - การให้คู่ต่อสู้ที่ชาญฉลาด - สามารถบังคับให้คุณทำผิดพลาดได้ในที่สุด แม้ว่าคุณจะรู้ทุกอย่าง แต่การเคลื่อนไหวครั้งต่อไปของคุณคือความโลภในการจับคู่ฮิวริสติก คอมพิวเตอร์หมากรุกส่วนใหญ่พยายามจับคู่เกมจบที่เป็นไปได้กับเกมที่กำลังดำเนินอยู่ซึ่งโดยพื้นฐานแล้วเป็นการย้อนกลับการเขียนโปรแกรมแบบไดนามิก อีกครั้ง endgame ที่เป็นปัญหาสามารถหลีกเลี่ยงได้ แก้ไข: อืม ... ดูเหมือนว่าฉันจะขนที่นี่ ดีแล้ว. ลองคิดดูอีกครั้งดูเหมือนว่าจะไม่มีปัญหาทางทฤษฎีในการแก้เกมที่ จำกัด เช่นหมากรุก ฉันจะเถียงว่าหมากรุกซับซ้อนกว่าหมากฮอสเล็กน้อยเนื่องจากการชนะไม่จำเป็นต้องเป็นตัวเลขที่เหนื่อยล้า แต่เป็นของเพื่อน คำยืนยันเดิมของฉันอาจผิด แต่แล้วอีกครั้งฉันคิดว่าฉันได้ชี้ให้เห็นบางสิ่งที่ยังไม่ได้รับการพิสูจน์อย่างเป็นที่พอใจ (อย่างเป็นทางการ) ฉันเดาว่าการทดลองทางความคิดของฉันคือเมื่อใดก็ตามที่มีการใช้กิ่งไม้ในต้นไม้อัลกอริทึม (หรือเส้นทางที่จดจำ) จะต้องหาเส้นทางไปยังคู่ครอง …

3
ความสำคัญของการเริ่มต้นอาร์เรย์ทิศทางด้านล่างด้วยค่าที่กำหนดเมื่อพัฒนาโปรแกรมหมากรุกคืออะไร?
ฉันยังใหม่กับการเขียนโปรแกรมเชิงแข่งขันและฉันสังเกตเห็นบ่อยครั้งว่า coders ที่ยอดเยี่ยมหลายตัวมีสี่บรรทัดนี้ในโค้ด (โดยเฉพาะอย่างยิ่งในส่วนที่เกี่ยวข้องกับอาร์เรย์): int di[] = { 1, -1, 0, 0, 1, -1, 1, -1 }; int dj[] = { 0, 0, 1, -1, 1, -1, -1, 1 }; int diK[] = { -2, -2, -1, 1, 2, 2, 1, -1 }; int djK[] = { -1, 1, 2, …
106 c++  c  chess 

30
โปรแกรมเมอร์ปริศนา: การเข้ารหัสสถานะกระดานหมากรุกตลอดทั้งเกม
ไม่ใช่คำถามอย่างเคร่งครัดปริศนามากกว่า ... ในช่วงหลายปีที่ผ่านมาฉันมีส่วนร่วมในการสัมภาษณ์ทางเทคนิคของพนักงานใหม่สองสามครั้ง นอกเหนือจากการถามคำถามมาตรฐาน "คุณรู้จักเทคโนโลยี X" แล้วฉันยังพยายามทำความเข้าใจว่าพวกเขารับมือกับปัญหาอย่างไร โดยปกติฉันจะส่งคำถามให้พวกเขาทางอีเมลหนึ่งวันก่อนการสัมภาษณ์และคาดว่าพวกเขาจะได้รับคำตอบภายในวันรุ่งขึ้น บ่อยครั้งที่ผลลัพธ์ค่อนข้างน่าสนใจ - ผิด แต่น่าสนใจ - และบุคคลนั้นจะยังคงได้รับคำแนะนำของฉันหากพวกเขาสามารถอธิบายได้ว่าทำไมพวกเขาจึงใช้แนวทางเฉพาะ ดังนั้นฉันคิดว่าฉันจะโยนหนึ่งในคำถามของฉันให้กับผู้ชม Stack Overflow คำถาม: อะไรคือวิธีที่ประหยัดพื้นที่ที่สุดที่คุณคิดได้ในการเข้ารหัสสถานะของเกมหมากรุก (หรือเซตย่อย) นั่นคือให้กระดานหมากรุกที่มีการจัดเรียงชิ้นส่วนอย่างถูกกฎหมายเข้ารหัสทั้งสถานะเริ่มต้นนี้และการเคลื่อนไหวทางกฎหมายที่ตามมาทั้งหมดที่ผู้เล่นในเกมดำเนินการ ไม่ต้องใช้รหัสสำหรับคำตอบเพียงแค่คำอธิบายของอัลกอริทึมที่คุณจะใช้ แก้ไข: ตามที่ผู้โพสต์คนหนึ่งชี้ให้เห็นฉันไม่ได้พิจารณาช่วงเวลาระหว่างการเคลื่อนไหว อย่าลังเลที่จะพิจารณาสิ่งนั้นเป็นตัวเลือกเพิ่มเติม :) EDIT2: เพื่อความชัดเจนเพิ่มเติม ... โปรดจำไว้ว่าตัวเข้ารหัส / ตัวถอดรหัสเป็นกฎที่รับรู้ สิ่งเดียวที่ต้องจัดเก็บจริงๆคือตัวเลือกของผู้เล่น - สิ่งอื่นใดที่สามารถสันนิษฐานได้โดยตัวเข้ารหัส / ตัวถอดรหัส แก้ไข 3: การเลือกผู้ชนะที่นี่จะเป็นเรื่องยาก :) คำตอบที่ดีมากมาย!

16
เส้นทางที่สั้นที่สุดของอัศวินบนกระดานหมากรุก
ฉันฝึกซ้อมสำหรับการแข่งขันรายการที่กำลังจะมาถึงและฉันเจอคำถามที่ทำให้ฉันงงงวยไปหมด อย่างไรก็ตามฉันรู้สึกราวกับว่ามันเป็นแนวคิดที่ฉันควรเรียนรู้ในตอนนี้แทนที่จะข้ามนิ้วไปที่มันไม่มีวันเกิดขึ้น โดยทั่วไปจะเกี่ยวข้องกับชิ้นส่วนอัศวินบนกระดานหมากรุก คุณได้รับปัจจัยการผลิตสองรายการ: ตำแหน่งเริ่มต้นและตำแหน่งสิ้นสุด เป้าหมายคือการคำนวณและพิมพ์เส้นทางที่สั้นที่สุดที่อัศวินสามารถใช้เพื่อไปยังสถานที่เป้าหมาย ฉันไม่เคยจัดการกับสิ่งที่สั้นที่สุดเท่าที่ควรและฉันไม่รู้ด้วยซ้ำว่าจะเริ่มจากตรงไหน ฉันใช้ตรรกะอะไรในการจัดการกับปัญหานี้ ป.ล. หากมีความเกี่ยวข้องใด ๆ พวกเขาต้องการให้คุณเสริมการเคลื่อนไหวปกติของอัศวินโดยปล่อยให้มันเคลื่อนที่ไปที่มุมทั้งสี่ของจัตุรัสที่เกิดจากการเคลื่อนไหว (ที่เป็นไปได้) แปดท่าที่อัศวินสามารถทำได้เนื่องจากตรงกลางของจัตุรัสคือ ที่ตั้งของอัศวิน

3
การออกแบบเชิงวัตถุสำหรับเกมหมากรุก [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันพยายามทำความเข้าใจเกี่ยวกับวิธีการออกแบบและคิดในลักษณะเชิงวัตถุและต้องการรับคำติชมจากชุมชนในหัวข้อนี้ ต่อไปนี้เป็นตัวอย่างเกมหมากรุกที่ฉันต้องการออกแบบในลักษณะ OO นี่เป็นการออกแบบที่กว้างมากและจุดสนใจของฉันในขั้นตอนนี้คือการระบุว่าใครเป็นผู้รับผิดชอบต่อข้อความใดและวัตถุโต้ตอบกันอย่างไรเพื่อจำลองเกม โปรดชี้ให้เห็นว่ามีองค์ประกอบของการออกแบบที่ไม่ดี (ข้อต่อสูงการเชื่อมต่อที่ไม่ดี ฯลฯ ) และจะปรับปรุงได้อย่างไร เกมหมากรุกมีคลาสดังต่อไปนี้ คณะกรรมการ ผู้เล่น ชิ้น สแควร์ เกมหมากรุก คณะกรรมการประกอบด้วยสี่เหลี่ยมดังนั้นคณะกรรมการจึงมีหน้าที่รับผิดชอบในการสร้างและจัดการวัตถุทรงสี่เหลี่ยม แต่ละชิ้นยังอยู่ในรูปสี่เหลี่ยมจัตุรัสดังนั้นแต่ละชิ้นจึงมีการอ้างอิงถึงสี่เหลี่ยมจัตุรัสด้วย (สิ่งนี้สมเหตุสมผลหรือไม่?) จากนั้นแต่ละชิ้นจะต้องรับผิดชอบในการเคลื่อนย้ายตัวเองจากตารางหนึ่งไปยังอีกสี่เหลี่ยมหนึ่ง คลาสผู้เล่นมีการอ้างอิงถึงชิ้นส่วนทั้งหมดที่เขาเป็นเจ้าของและยังรับผิดชอบในการสร้างของพวกเขา (ผู้เล่นควรสร้างชิ้นส่วนหรือไม่) ผู้เล่นมีวิธี TakeTurn ซึ่งจะเรียกวิธีการ movePiece ซึ่งเป็นของคลาสชิ้นส่วนซึ่งเปลี่ยนตำแหน่งของชิ้นส่วนจากตำแหน่งปัจจุบันไปยังตำแหน่งอื่น ตอนนี้ผมสับสนว่าคณะกรรมการต้องรับผิดชอบอะไรกันแน่ ฉันคิดว่าจำเป็นต้องกำหนดสถานะปัจจุบันของเกมและรู้ว่าเมื่อเกมจบลง แต่เมื่อชิ้นส่วนเปลี่ยนมัน ' ตำแหน่งของบอร์ดควรปรับปรุงอย่างไร ควรรักษาอาร์เรย์ของสี่เหลี่ยมที่แยกจากกันซึ่งชิ้นส่วนใดมีอยู่และได้รับการอัปเดตเมื่อชิ้นส่วนเคลื่อนที่หรือไม่ นอกจากนี้ ChessGame ยังสร้างบอร์ดและวัตถุของผู้เล่นอย่างตั้งใจซึ่งจะสร้างสี่เหลี่ยมและชิ้นส่วนตามลำดับและเริ่มการจำลอง สั้น ๆ นี่อาจเป็นลักษณะของโค้ดใน ChessGame Player p1 …
88 chess  oop 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.