ตอนนี้ฉันเชื่อว่าคำตอบของ Fabian Fichterนั้นถูกต้อง ความเห็นต่อไปนี้เกี่ยวกับคำตอบของเฟเบียนอาจช่วยโน้มน้าวผู้อื่นในแบบเดียวกัน
1. ตำแหน่งที่ดูเหมือนว่าจะได้รับผลกระทบจากการลบการส่งเสริมการขายลูกไก่
การวิเคราะห์ผลลัพธ์ที่โพสต์จาก Stockfish ที่แก้ไขแล้วเกมทั้งหมดมาบรรจบกันอย่างรวดเร็วในตำแหน่งต่อไปนี้: S / -l- / ge - / - E - / - LG / cC
$ ./dobutsu -vs900
Loading tablebase... done
1. setup S/-l-/ge-/-E-/-LG/cC
1. show board
ABC
+---+
1| l | c
2|ge |
3| E |
4| LG| *C
+---+
1. show lines
Eb3xa2 : #-72 (67.13%)
C *a4 : #-70 (32.87%) <--- apparently quite strong
Gc4-c3 : #-46 ( 0.00%)
C *c2 : #-36 ( 0.00%)
C *c1 : #-28 ( 0.00%)
Eb3-a4 : #-26 ( 0.00%)
Lb4-a4 : #-26 ( 0.00%)
C *a1 : #-24 ( 0.00%)
C *c3 : #-22 ( 0.00%)
C *a3 : #-20 ( 0.00%)
Eb3-c2 : #-12 ( 0.00%)
Lb4-c3 : #-2 ( 0.00%)
Lb4-a3 : #-2 ( 0.00%)
จากนั้น Sente ก็เล่นC*a4
วางลูกไก่ไว้ที่มุมล่างซ้าย ตอนแรกฉันคิดว่านี่เป็นการตกที่ไร้ประโยชน์ แต่ตามฐานของตารางแล้วมันไม่เลวเลย
1. C *a4
ABC
+---+
1| l | *c
2|ge |
3| E |
4|CLG|
+---+
ตอนนี้สิ่งที่น่าสนใจเกิดขึ้น ฐานโต๊ะเห็นด้วยกับ Stockfish ที่ก้าวสิงโตไปด้านข้างเป็นรูปวาด แต่สิ่งที่เกี่ยวกับการทิ้งลูกไก่เพื่อต่อสู้กับลูกไก่?
2. show lines
C *a3 : #69 (99.57%) <--- winning chick drop
C *c2 : #91 ( 0.21%)
C *c1 : #91 ( 0.21%)
C *a1 : 0 ( 0.00%)
Ga2-a1 : 0 ( 0.00%)
Eb2-c1 : 0 ( 0.00%)
Eb2-a1 : 0 ( 0.00%)
Lb1-a1 : 0 ( 0.00%) <--- draws the game
C *c3 : #-28 ( 0.00%)
Lb1-c1 : #-22 ( 0.00%)
Eb2-c3 : #-20 ( 0.00%)
Eb2-a3 : #-20 ( 0.00%)
Ga2-a3 : #-18 ( 0.00%)
Lb1-c2 : #-2 ( 0.00%)
2. C *a3
ABC
+---+
1| l |
2|ge |
3|cE |
4|CLG| *
+---+
ตอนนี้ลูกไก่อยู่a3
ห่างเพียงหนึ่งก้าวจากการโปรโมตและยิ่งไปกว่านั้นก็ให้ตรวจสอบการส่งเสริมซึ่งจะบังคับให้สิงโต Sente นำมันไป ปัญหาเดียวก็คือการย้ายที่ดีที่สุดเกี่ยวข้องกับการสูญเสียลูกไก่a3
และเราก็ยังค่อนข้างห่างไกลจากการรุกฆาต ดังนั้นเราจะต้องใช้เวลาเล็กน้อยในการตัดสั้น ๆ เช่นที่เราสูญเสียได้เร็วขึ้น แต่ไม่สูญเสียด้วยเหตุผลอื่น ๆ เช่นการให้วัสดุที่ไม่จำเป็น
3. show lines
Ca4xa3 : #-68 (92.84%) <--- catches chick about to promote
Gc4-c3 : #-62 ( 7.16%)
Eb3xa2 : #-32 ( 0.00%) <--- shortcut
Eb3-c2 : #-8 ( 0.00%) <--- give away elephant
Lb4-c3 : #-2 ( 0.00%) <--- stupid
Lb4xa3 : #-2 ( 0.00%) <--- stupid
3. Eb3xa2
ABC
+---+
1| l | *
2|Ee |
3|c |
4|CLG| G
+---+
4. show lines
Lb1xa2 : #31 (100.00%)
Lb1-c2 : #-10 ( 0.00%)
Lb1-c1 : #-6 ( 0.00%)
Lb1-a1 : #-6 ( 0.00%)
Ca3xa4+: #-2 ( 0.00%)
Eb2-c3 : #-2 ( 0.00%)
Eb2-c1 : #-2 ( 0.00%)
Eb2-a1 : #-2 ( 0.00%)
4. Lb1xa2
ABC
+---+
1| | e
2|le |
3|c |
4|CLG| *G
+---+
ดูเหมือนว่าเราจะประสบความสำเร็จในการรักษาภัยคุกคามของเจี๊ยบที่เสียสละเพื่อโปรโมตดังนั้นขอต่อไป!
5. show lines
G *b3 : #-30 (100.00%)
G *a1 : #-24 ( 0.00%)
G *c3 : #-20 ( 0.00%)
Gc4-c3 : #-18 ( 0.00%)
G *c2 : #-14 ( 0.00%)
G *c1 : #-10 ( 0.00%)
G *b1 : #-10 ( 0.00%)
Ca4xa3 : #-8 ( 0.00%)
Lb4-c3 : #-2 ( 0.00%)
Lb4-b3 : #-2 ( 0.00%)
Lb4xa3 : #-2 ( 0.00%)
5. G *b3
ABC
+---+
1| | *e
2|le |
3|cG |
4|CLG|
+---+
6. show lines
Ca3xa4+: #29 (100.00%) <--- sacrificial promoting chick check
E *c3 : #-30 ( 0.00%)
E *c1 : #-28 ( 0.00%)
Eb2-c1 : #-28 ( 0.00%)
Eb2-a1 : #-28 ( 0.00%)
La2-b1 : #-28 ( 0.00%)
La2-a1 : #-28 ( 0.00%)
E *c2 : #-26 ( 0.00%)
E *a1 : #-24 ( 0.00%)
E *b1 : #-12 ( 0.00%)
Eb2-c3 : #-12 ( 0.00%)
La2xb3 : #-2 ( 0.00%)
และนั่นก็คือลูกเจี๊ยบที่เสียสละโปรโมตว่าเป็นท่าที่ดีที่สุด! มาดูกันว่าเกิดอะไรขึ้น
6. Ca3xa4+:
ABC
+---+
1| | ce
2|le |
3| G |
4|rLG| *
+---+
7. show lines
Lb4xa4 : #-28 (100.00%) <--- take chick (forced if promoted)
Gc4-c3 : #-2 ( 0.00%)
Gb3-c3 : #-2 ( 0.00%)
Gb3-a3 : #-2 ( 0.00%)
Gb3xb2 : #-2 ( 0.00%)
Lb4-c3 : #-2 ( 0.00%)
Lb4-a3 : #-2 ( 0.00%)
ตอนนี้เรามาดูกันว่าจะเกิดอะไรขึ้นถ้าเราเปลี่ยนไก่ตัวนั้นเป็นไก่:
7. setup S/---/le-/-G-/cLG/ec
1. show board
ABC
+---+
1| | ce
2|le |
3| G |
4|cLG| *
+---+
1. show lines
Gc4-c3 : #-90 (100.00%)
Gb3xb2 : #-30 ( 0.00%)
Lb4xa4 : #-28 ( 0.00%)
Gb3-c3 : #-10 ( 0.00%)
Gb3-a3 : #-8 ( 0.00%)
Lb4-c3 : #-2 ( 0.00%)
Lb4-a3 : #-2 ( 0.00%)
ในตำแหน่งนี้การย้ายที่ดีที่สุดทำให้รุกฆาต 88 (90-2) ย้ายออกไปซึ่งอยู่ไกลจากรุกฆาตมากกว่าตำแหน่งเริ่มต้นทำให้เป็นไปได้ว่าเมื่อวิเคราะห์แล้วมันจะนำไปสู่ตำแหน่งอื่นที่ไม่มีการส่งเสริมพลังลูกไก่ คู่ครองก่อนหน้านี้ (ad infinitum) ถ้าเป็นจริงที่จะทำให้ตำแหน่ง G / --- / le- / cG- / CLG / E (ดูด้านล่าง) วาดแทนการชนะโดยไม่ต้องโปรโมชั่นเจี๊ยบ
ABC
+---+
1| | *e
2|le |
3|cG |
4|CLG|
+---+
2. ความถูกต้องของการค้นหาอย่างละเอียด
สมมติว่าเครื่องกำเนิดตารางพื้นฐานที่ใช้เป็นการค้นหาที่ถูกต้องแล้วดูเหมือนว่าโปรแกรมปรับปรุงของ Fabian ควรประสบความสำเร็จในการปิดใช้งานการส่งเสริมการขายลูกไก่เนื่องจากไฟล์moves.c
เป็นสถานที่เดียวที่POS_FLAGS
ใช้ (ยกเว้นการใช้ในvalidation.c
การตรวจสอบตำแหน่งของโครงสร้าง) เพื่อปิดการใช้งานโปรโมชัน
/* clear promotion bits for pieces that can't be promoted */
status &= POS_FLAGS;