找回密码
 加入
搜索
楼主: 水木子

[AU3基础] 数字游戏,猜你所选择的是哪个数字。

 火... [复制链接]
发表于 2012-5-13 02:24:43 | 显示全部楼层
本帖最后由 tryhi 于 2012-5-13 03:15 编辑

自己写了一下,被绕晕了,代码很罗嗦,很拖拉,纯粹是找抽型。。。。
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金钱 +80 收起 理由
水木子 + 80 学习啦!

查看全部评分

发表于 2012-5-13 02:44:15 | 显示全部楼层
本帖最后由 Duvet 于 2012-5-13 04:49 编辑

樓主的方法讓我學習了,美中不足的是答案不夠嚴謹
例如有些例外情況,三次都選一竟會有答案

回复 14# 3mile
學習了,依次選擇1,2,1看看

评分

参与人数 2金钱 +85 收起 理由
3mile + 35 多谢
水木子 + 50 非常感谢你的指正

查看全部评分

发表于 2012-5-13 10:29:29 | 显示全部楼层
**** 本内容被作者隐藏 ****


先申明我不是来晒代码的,我要的是你的思路和代码(不要求界面,只要能实 ...
水木子 发表于 2012-5-12 20:28


本人笨了点,很可能是根本没有理解水版的题意,所以觉得这好象不需要啥算法呀:

第一次选一排数之后,就只剩下7个数字了(去掉了14个数)
第二次选一排数字(前面剩下的7个数分到三排,以 2   2   3分),再次选了后就剩下2个数或3个数
第三次分配时若有3个数时就一排分一个,若只有两个数,就随便放在其中的两排,唯一性就出来了嘛


所以觉得没有什么搞头呀
发表于 2012-5-13 10:46:46 | 显示全部楼层
回复 17# Duvet
嗯,没有容错的代码.
仅加入容错代码:
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金钱 +50 收起 理由
水木子 + 50 学习了!

查看全部评分

发表于 2012-5-13 11:33:13 | 显示全部楼层
先看看你的代码
发表于 2012-5-13 11:33:17 | 显示全部楼层
先看看你的代码
发表于 2012-5-13 12:04:00 | 显示全部楼层
看看隐藏的内容
发表于 2012-5-13 13:55:39 | 显示全部楼层
本帖最后由 1007236046 于 2012-5-13 19:19 编辑

游客,如果您要查看本帖隐藏内容请回复

不会用楼主的static控件,用的button来显示数组的

评分

参与人数 1金钱 +80 收起 理由
水木子 + 80 学习啦!

查看全部评分

发表于 2012-5-13 15:24:45 | 显示全部楼层
没时间写代码了,写一下思路吧:


第一次排序没有任何讲究,随机排三列。当用户选着其中一行的时候,其实也就是排除了 7x2 = 14 个数字,
也就是说用户的选择是剩余的21-14=7个中的一个。我们姑且用 a、b、c、d、e、f、g 这七个数来代替。

第二次排序要有顺序,必须把七个数字以 331/223 的方式分开,也就是:

A:                B:
abcxxxx  或   abxxxxx
defxxxx        cdxxxxx
gxxxxxx        efgxxxx


如果是A这种分法,那么当用户选择第1、2行的时候,那么下次将abc、或def这两行的数字分开即可。 如果选择了第三行,很明显,那g就是唯一的结果。
如果是B这种分发,相同道理。

不知道有没有说清。。。请版主给一个更好的方式,学习一下这个算法。

评分

参与人数 1金钱 +50 收起 理由
水木子 + 50 分析得很彻底,学习了。

查看全部评分

 楼主| 发表于 2012-5-13 15:53:37 | 显示全部楼层
本帖最后由 水木子 于 2012-5-13 15:59 编辑

回复 24# MicroBlue

谈谈我的思路!
我代码里面没有什么排除之类意思,而是在将数组元素移动位置。
我们姑且将数组元素想象成扑克牌,而数组每个元素就是一张牌。
再来看看下面这代码,为什么要这样写呢?还记得那个扑克牌魔术是怎么玩的吗?
先将牌打开让观众记忆,观众记号后你开始发牌,第一次可以随意发牌没有顺序,发牌分成3组A/B/C,每组7张共21张,让观众说出他记忆的你张牌的在哪组,假设在A组,那么我们将3组牌收起来,注意这里就是关键了,收起来的时候牌需要有顺序的放,观众指定的那组牌必须放在中间,也就是说收起来的牌顺序是 B/A/C 注意A组在中间,然后再发牌再将牌发成3组每组7张,这些发牌就不能乱发了,也是有序的,必须3组一个一张的来也就是 ABC ABC ABC …… 这样一张一张的发,新得到3组,如此反复3次,最后观众所记忆的这张牌就会被移动他所选那组的中间位置,比如第3次他选了B组,那么他所记忆的牌就是B组第4张,这也就是所以我代码中最后得出结果的时候是在取位置。

说得有点多了,不知道数清楚没有,至于到底为什么会这样,大家可以那扑克牌来试试就知道了。


如下代码就是为了将观众所选组放在牌组的中间,以便下一次发牌。
           Case $Label1
                        _SetData($Label2, $Label1, $Label3)                     
                Case $Label2
                        _SetData($Label1, $Label2, $Label3)
                Case $Label3
                        _SetData($Label1, $Label3, $Label2)
发表于 2012-5-13 16:21:26 | 显示全部楼层
回复 25# 水木子


    哈哈,看来思路是不一样啊,真是一个人一个思路啊。咱们思路不一样,但本质应该是一样的吧。你结合了扑克牌游戏,这样思考起来更形象,我那是纯运算。好久没思考问题了,还是要谢谢你的游戏。
发表于 2012-5-13 22:15:21 | 显示全部楼层
看一看怎么实现先!
发表于 2012-5-14 06:32:17 | 显示全部楼层
看看隐藏的内容
发表于 2012-5-14 08:19:46 | 显示全部楼层
很有意思,看看代码.
发表于 2012-5-14 08:46:09 | 显示全部楼层
有点儿意思,让我瞧睢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-21 20:35 , Processed in 0.077191 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表