国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

x01.Weiqi.11: 神來之筆

2019-11-17 02:20:37
字體:
來源:轉載
供稿:網友

x01.Weiqi.11: 神來之筆

在圍棋中,一子兩用,可謂妙手,而一子三用,則可稱之為神來之筆。在解決征子問題時,一不小心,也來了個神來之筆,其代碼如下:

        // 征子判斷,p1, p2 為氣,p2 為前進方向,p 為逃跑之子。        bool CanLevy(Pos p1, Pos p2, Pos p, bool isBlack = true)        {            if (!IsCusp(p1, p2)) return true;            if (p == m_InvalidPos) return true;            List<Pos> selfPoses = isBlack ? BlackPoses : WhitePoses;            List<Pos> otherPoses = !isBlack ? BlackPoses : WhitePoses;            // 征而被叫,豈不大笑?            var p1_links = LinkPoses(p1).Intersect(otherPoses).ToList();            if (p1_links.Count == 1 && p1_links.Intersect(EmptyPoses).Count() == 2)                return false;            var p2_links = LinkPoses(p2).Intersect(otherPoses).ToList();            if (p2_links.Count == 1 && p2_links.Intersect(EmptyPoses).Count() == 2)                return false;            int count = 0;            while (true) {                if (!InRange(p2.Row, p2.Col))                    break;                bool isRow = p2.Row - p.Row == 0 ? true : false;                int rowOffset = isRow ? (count == 0 ? p1.Row - p2.Row : p2.Row - p1.Row) : 0;                int colOffset = isRow ? 0 : (count ==  0 ? p1.Col - p2.Col :p2.Col - p1.Col);                Pos pos = new Pos(p2.Row + rowOffset, p2.Col + colOffset);                var rounds = count < 5 ? LinkPoses(pos) : RoundTwoPoses(pos);                foreach (var r in rounds) {                    if (isBlack && count < 2) continue; // 黑需先走兩步                    if (selfPoses.Contains(r))                        return false;                    if (otherPoses.Contains(r)) {                        return true;                    }                }                count++;                p1 = p;                p = p2;                p2 = pos;            }            return true;        }

其中,count 變量,分別控制符號轉換(count == 0),排除舊有(count < 5),黑棋預走(count < 2) 三種情況,并且三種情況皆不可少。

現在可以看看效果圖了:

當 白10 征子時,不可逃,電腦選擇了 黑11,而 白12 時,可以逃了,電腦就聰明的選擇了 黑13,堪稱完美!

完整代碼下載,可參看上一篇博客。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泾源县| 盐池县| 东乡族自治县| 黎川县| 呼伦贝尔市| 望谟县| 岳普湖县| 武乡县| 建瓯市| 门源| 阜新| 黑山县| 紫云| 类乌齐县| 阳信县| 江北区| 万年县| 奇台县| 镇雄县| 棋牌| 修武县| 股票| 光山县| 麻栗坡县| 和平县| 吴江市| 平远县| 湟源县| 赤峰市| 防城港市| 博客| 定陶县| 新源县| 濮阳县| 安国市| 文安县| 安溪县| 安陆市| 邛崃市| 镇雄县| 浏阳市|