当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 60 篇帖子 ]  前往页数 上一页  1, 2, 3, 4  下一页
作者 内容
31 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-20 21:05 

注册: 2011-07-08 17:59
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
人工智能的话有不同的各种算法啊...
各种启发思路...
要说简单的话很简单,
但是要说困难也很困难啊


页首
 用户资料  
 
32 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-20 21:12 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
果然VS2010的结果和gcc一样,看来还是要重新设计一下算法。。。


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
33 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-21 11:11 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
好吧,估计是加权的算法有问题。。。


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
34 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-21 11:43 

注册: 2007-07-14 17:04
帖子: 624
送出感谢: 6
接收感谢: 3
这个有意思,收藏,研习


页首
 用户资料  
 
35 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-21 19:27 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
呵呵,我来贡献一个Common Lisp版本的,尽管没什么人工智能的成份在里面 :em06

[lisp]
(defparameter *policy-probability*
'(("石头" . 0)
("剪刀" . 0)
("布" . 0)))

(defun find-max (alist)
(if (null alist)
(error "这是个空表,你耍我啊?")
(if (null (cdr alist))
(car alist)
(let ((head (car alist))
(tail (find-max (cdr alist))))
(if (> (cdr head)
(cdr tail))
head
tail)))))

(defun computer-policy ()
(car (rassoc (car (find-max *policy-probability*))
*judge-table* :test #'string=)))

(defparameter *judge-table*
'(("石头" . "剪刀")
("剪刀" . "布")
("布" . "石头")))

(defun judge (user computer)
(incf (cdr (assoc user *policy-probability* :test #'string=)))
(cond ((equal computer (cdr (assoc user *judge-table* :test #'string=)))
"你赢了")
((equal user (cdr (assoc computer *judge-table* :test #'string=)))
"你输了")
(t
"双方平手")))

(defun start ()
(format t "请输入你的决定,我保证电脑没有作弊:")
(force-output)
(let ((user (read-line)))
(if (not (member user '("石头" "剪刀" "布") :test #'string=))
(progn
(format t "你丫的不好好出拳,给我认真点!~%")
(start)
(return-from start))
(let ((computer (computer-policy)))
(format t "~A对~A,~A~%" user computer
(judge user computer)))))
(format t "继续玩不?(是/否)~%")
(force-output)
(if (string= "是" (read-line))
(start)))
[/lisp]

算法很简单,就是记录每一次用户的出拳,然后增加次数,当电脑要出拳时,就先在已知的数据中查找次数最多的一种

拳,然后找出相应的克星就行了,挺白痴的 :em02


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
36 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-21 21:25 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
改一下,虽然智能差了一点,但基本没bug了。。。 :em03
[c]#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void main()
{
srand((unsigned)time(NULL));
int xx[3][3]={{0,-1,1},{1,0,-1},{-1,1,0}};
int p,c,n=3,x1=1,x2=1,x3=1,k;
float l=0.0,t;
printf("1,剪子;2,包袱;3,锤;0,退出:\n");
do
{
printf("请输入你的结果:");
scanf("%d",&p);
c=rand()%3+1;
t=c/3.0;
if(t<(1.0*x1/n))
c=3;
else
{
if(t>(1.0*(x2+x1)/n))
c=2;
else
c=1;
}
switch(p)
{
case 0:break;
case 1:k=xx[c-1][p-1];x1++;n++;break;
case 2:k=xx[c-1][p-1];x2++;n++;break;
case 3:k=xx[c-1][p-1];x3++;n++;break;
default:
printf("输入有误,请重新输入:\n");break;
}
switch(k)
{
case 1:printf("你赢了!\n"),l++;break;
case -1:printf("你输了!\n");break;
case 0:printf("平局!\n");break;
}
}while(p!=0);
printf("一共进行了%d场比赛,胜率为:%f.\n",n,l/n);
}[/c]


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
37 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-21 21:45 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
俺的可是人工智能领域的当家语言哦,大家好好欣赏一下伟大的Lisp语言的奇特的表达方式吧 :em09


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
38 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-21 21:48 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
liu滔 写道:
俺的可是人工智能领域的当家语言哦,大家好好欣赏一下伟大的Lisp语言的奇特的表达方式吧 :em09

C语言王道。。。


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
39 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-21 23:07 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
月下叹逍遥 写道:
liu滔 写道:
俺的可是人工智能领域的当家语言哦,大家好好欣赏一下伟大的Lisp语言的奇特的表达方式吧 :em09

C语言王道。。。

其实我也觉得,因为我也是会C语言的 :em09

学会了C语言和掌握了Lisp,那么就可以从机器的角度和抽象的角度看待程序了~~~


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
40 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-22 21:38 
头像

注册: 2011-08-17 12:54
帖子: 287
送出感谢: 0 次
接收感谢: 4
纯c行不行。。


页首
 用户资料  
 
41 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-22 22:10 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
dryland718 写道:
纯c行不行。。

当然行啊,不限编程语言啊,而且上面就有纯C啦~~~ :em09


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
42 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-22 22:11 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
liu滔 写道:
dryland718 写道:
纯c行不行。。

当然行啊,不限编程语言啊,而且上面就有纯C啦~~~ :em09


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
43 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-22 22:23 
头像

注册: 2010-10-09 23:01
帖子: 7210
送出感谢: 8
接收感谢: 23
月下叹逍遥 写道:
liu滔 写道:
dryland718 写道:
纯c行不行。。

当然行啊,不限编程语言啊,而且上面就有纯C啦~~~ :em09

瞧南瓜乐的,说到自己了 :em04


_________________
GitHub博客——稍微改了一下版面(于2012/8/23
新浪微博——话痨
新浪博客——伪技术博客
GitHub主页——充斥眼球的Common Lisp


页首
 用户资料  
 
44 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-24 10:33 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10149
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
有个参数可以考虑进去,就是输赢状态,当上一把的输赢状态不同时,人的决策也会不一样。
如果可以根据目前输赢状态和次数加上习惯来计算下一把的概率,就最好了。


页首
 用户资料  
 
45 楼 
 文章标题 : Re: [五星]程序开发一个石头剪刀布的人机对战程序
帖子发表于 : 2011-10-31 10:34 
头像

注册: 2007-03-07 9:35
帖子: 198
送出感谢: 0 次
接收感谢: 0 次
oneleaf 写道:
有个参数可以考虑进去,就是输赢状态,当上一把的输赢状态不同时,人的决策也会不一样。
如果可以根据目前输赢状态和次数加上习惯来计算下一把的概率,就最好了。


这个很有意思,空了加上去试试。 :em11


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 60 篇帖子 ]  前往页数 上一页  1, 2, 3, 4  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译