免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 12825 | 回复: 5
打印 上一主题 下一主题

[练习] 1A2B 猜数字游戏 [复制链接]

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-01 05:44 |只看该作者 |倒序浏览
问题:

player 生成一个由0-9组成的四位数给电脑猜。
规则:可以由0开头,不能有重复数字,比如1123就不符合规则,0123符合规则。
电脑每猜一个数字,player 就根据这个数字给出几A几B。
直到电脑猜中(即 4A0B)为止。

计分规则:
  • player 输入 4A0B为最后一步,而不是以已经知道答案那一步为最后一步。
  • 电脑 1 步猜中,player 得到 0 分
  • 电脑 2 步猜中,player 得到 1 分
  • ...
  • 电脑 8 步猜中,player 得到 7 分

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
2 [报告]
发表于 2013-12-04 04:50 |只看该作者
v1:
  1. #!/usr/bin/ruby -w
  2. $gather = ('0123' .. '9876').reject {|x| x =~ /(\d).*\1/ }
  3. $score  = -1

  4. def get snum, nscore
  5.   loop do
  6.     print "#{nscore} | #{snum} | AB = "
  7.     sab = gets.scan(/^\s*(\d)\s*(\d)\s*$/).flatten
  8.     return sab if sab.size == 2 && sab[0].to_i + sab[1].to_i <= 4
  9.     puts "#{nscore} | wrong  AB !"
  10.   end
  11. end

  12. def guess
  13.   spick, apick = $gather.sample, []
  14.   sA, sB = get spick, $score += 1
  15.   $score -= 1 if sA == ?4
  16.   for g in $gather
  17.     sa  = (0 .. 3).select {|s| spick[s] == g[s] }.size
  18.     sA.to_i == sa or next
  19.     sab = (g.split(//) & spick.split(//)).size
  20.     sab - sa == sB.to_i and apick << g
  21.   end
  22.   $gather = apick
  23. end

  24. while $gather.size > 1 do guess end
  25. puts $gather.size >= 1 ?
  26.   ($score += 1).to_s << " [ #{$gather[0]} ] score = #{$score}" :
  27.   'you liar'
复制代码

论坛徽章:
3
天蝎座
日期:2013-11-19 13:41:03摩羯座
日期:2013-12-04 20:06:57巳蛇
日期:2013-12-23 08:08:12
3 [报告]
发表于 2013-12-04 10:07 |只看该作者
哪兒來的題目?看你發了好多了

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
4 [报告]
发表于 2013-12-05 07:03 |只看该作者
回复 3# lightsorrow

perl ban~
   

论坛徽章:
3
天蝎座
日期:2013-11-19 13:41:03摩羯座
日期:2013-12-04 20:06:57巳蛇
日期:2013-12-23 08:08:12
5 [报告]
发表于 2013-12-05 10:32 |只看该作者
回复 4# rubyish
你從perler轉ruby了?爲什麼?


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
6 [报告]
发表于 2013-12-05 22:50 |只看该作者
回复 5# lightsorrow

~
不,这不是真的,只是在我的红宝石练习的东西
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP