| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 773 人关注过本帖
标题:编程下围棋,有兴趣的来试一试。
只看楼主 加入收藏
自学的数学
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:603
专家分:2418
注 册:2017-11-15
结帖率:95.65%
  已结贴   问题点数:20  回复次数:5   
编程下围棋,有兴趣的来试一试。
会编程会下围棋的,可以好好看下;
会编程不会下围棋的,可以参考http://www.7lotustech.com/Article/qihun/Lession/201309/8759.htm
围棋的输赢是根据双方所占有的地方的多少而定的(多就赢,少就输)。下围棋双方还有时间上的限制。
在编程这里,跟围棋有关的知识,我们不用考虑那么多,不考虑输赢的多少,时间的限制。只考虑一个问题:棋盘上是否还有可以落子的地方。
但是下围棋的最基本的东西还是要的,那就是:
围棋通常由两个人进行对局,对局时一方执黑棋,另一方执白棋。
围棋应从空棋盘开始对局。
执黑棋的一方应先下子,执白棋的一方随后下子(也就是黑先白后)。
对局时,双方应该轮流在棋盘上下子,每方每次只能在棋盘上下一个子。
棋盘:围棋盘由19条横线19条竖线组成,共361个交叉点,最外边的线称为边线。
行棋规则:
1.棋子要下在棋盘的边线之内。
2.棋盘是由横线和竖线组成的,横竖相交的地方叫做交叉点,棋子只能落在交叉点上。
3.拿黑子的一方先行,双方交替落子。任何一方不可以连续下两手。
下棋时,还有一个问题要考虑。那就是打劫,不然这盘棋永远下不完,打劫参见 http://www.7lotustech.com/Article/qihun/Lession/201310/8863.htm
围棋的知识,说完毕了,现在说说编程的事情:
围棋棋盘的建立可以用二维数组来建立,棋盘的大小为19行19列的一个二维数组,比如a[19][19],下棋前,为二位数组赋初值为a[19][19]=0.(0表示棋盘上是空的,1表示黑棋,2表示白棋)先下1,后下2,交替落子。随着1和2的不断落子,棋盘上的0就越来越少了,下到最后,就没处落子了。
当然,下棋时。要考虑“吃子”。吃子参见:http://www.7lotustech.com/Article/qihun/Lession/201309/8759.htm
“吃子”作为围棋术语,也可称“提子”。在实战对局中,一方将另一方的一个或多个棋子紧紧包围,使其所有的气数被全部堵住(即其所有紧紧相邻的交叉点全部被占有),随后将无气的棋子从棋盘上拿掉,就叫“吃子”,比如白棋(2)吃黑棋(1)将一个或多个棋子紧紧包围,使其所有的气数(就是这里的0)被全部堵住,随后将无气的棋子从棋盘上拿掉,这时,棋盘上的1就减少了,0就增加了。0 的位置又可以落子了。就这样反复落子,直到最后结束对局。
现在有两个人对局。我们不用考虑对局结果,只看对局最后,无处落子时。最多共下了多少手棋,就是共落子多少次(m次)。编程就是计算这个m的值,m最多是多少??是10000.还是100000?
2018-06-22 11:22
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
  得分:6 
这个交给狗狗处理好了

当然看过就是要怎么判断棋子被围起来,其实简单的就和五子棋设计方法类似,只不过感觉围棋要判断处理的东西比五子棋要多

然后看到题主问的是最多能够下几次,这个……看样子要记录重复出现的局面才行,因为可能会出现同一个局面重复出现两次而陷入循环的情况~

[此贴子已经被作者于2018-6-22 14:21编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-06-22 14:19
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
  得分:7 
其实,如果是楼主那样不计时要遍历所有情况并且下到不能下的情况,就算算上不能重复出现同一个棋局这个规定,估计嘛……比国际象棋值多少粒大米这个数量还要多很多,想想3阶魔方有多少种情况就知道了~什么,3阶才那么几种太少?那就估计4阶,5阶……n阶,看看就好了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-06-22 15:46
新手小白萌萌
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-6-23
  得分:0 
想自学编程
会简单的使用电脑,想自学编程,但是通过几天的了解感觉“编程”的范围太广了,希望大神能给点意见,需要学习哪些书,和哪些比较实用的软件,应用在哪个范围领域!!求大神指点!
2018-06-23 14:49
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
  得分:0 
回复 4楼 新手小白萌萌
都说编程范围太广了,因此要自己看看编程发展方向是啥,是用来找工作还是纯属兴趣,然后再看看要学那种语言~

最近看游戏脚本就是用ruby弄的,或者初学看看C也可以

当然我看编程的感觉和常规学习的有很大出入,我就不说具体的自身情况了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-06-23 15:53
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
  得分:7 
不会下围棋,但基本规则还是知道的。
写个自己和自己下的围棋代码应该比较容易的。人机对下的AI……,那就算了吧,据说Alpha Go相当于“一万人/年的代码量+几百国手级大师参与”才研制成功的,以单人之力想做围棋AI,至少要个会写代码的国手吧,才有资格做下梦吧。
2018-06-23 20:52







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028058 second(s), 9 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved