网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月10日漏签0天
vb吧 关注:156,019贴子:1,166,212
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 9回复贴,共1页
<<返回vb吧
>0< 加载中...

编程解决“爱因斯坦经典逻辑题”,大家是否有兴趣一试呢?

  • 取消只看楼主
  • 收藏

  • 回复
  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一楼喂度娘。
等半个钟头后,确认这个贴子没被吞,我再说下文。


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大家在网上可以搜索到不少的“爱因斯坦经典逻辑题”方面的帖子。
基本上都是“用语言描述分析”的,也有用代码求解的(我只找到几个C++的)。
当然“原版出处”也许找不到,基本都是翻译成中文的了,内容差异不大。
前几天Q群里有人提起了这问题,也写出了解题代码。
题目内容基本是这样:

这个“提示”严格来说不应该称为提示,应该是“已知条件”或“限制条件”。
若没有“条件”,那么谁都可以养鱼,没有推理依据,这“问题”也不能成为真正的问题。
不过,上面的“第4项”似乎有点歧义,也许是“翻译”不准确的原因。
按我写出来的代码,如果“绿色房子”必须紧挨着白色房子,那么只有1个解;
  如果“绿色房子与白色房子可以不紧邻、只要符合‘在其左边’即可”,那么就会有7
组符合要求的解。估计爱因斯坦的“原意”应该是“绿、白紧邻”的。
当然,编程解决嘛,也没有什么好高深的:列举所有的组合、按条件进行判断呗。
  符合全部条件的即是“解”;任一条件不符合排除掉就是了。
只不过呢,编程自然就有“代码效率”问题,
  若不讲求技巧、方法,那么必然运行速度很慢。
毕竟每个“因素”(房子颜色、国籍、饮品、香烟、宠物)的全排列有120种(5!=120),
  5种因素全部的组合,就会有120⁵种,要把这么多种组合“查完”,耗时肯定不少。
当时群里那位的“初始代码”,运行了十几秒求出解,我的“直觉”就感觉太慢了。
  当然后来他发布出了优化过的代码,速度就要快得多了。
我运行试了一下,求“唯一解”的情况“通常情况”在100ms左右。
 感觉速度还算过得去罢。(我的电脑属于“低配”的)
后来我也按我的想法,写了一份代码。IDE中运行,基本是4ms,编译后基本为2ms。
(注意:我这个时间是“枚举所有可能的情况”,不是找到一个就结束)
我发这个帖子,是想让大家开动脑筋,写代码试试看,看你的代码效果如何。
现在大家主要考虑“绿色房子紧邻着白色房子”这种情况吧,看看你的代码需要
 运行多久求出答案。如果“运行时间长”的话(比如30ms以上),用GetTickCount()
 就行了,也可以用VB自身的 Timer()函数(此函数单位是“秒”,单精度值)。
 时间短的话,就要象下面我的代码中那样,用较高精度的API函数。
我的算法代码,暂时不公布,先只发个“效果图”。
下图另存为rar文件,可以解压出我的exe,可以在你的电脑上实际运行一下。

当然我的“初始代码”就是奔着“最高运行速度”去的,“枚举所有可能”的代码看起来有点乱。
不过最终速度是远比我想象的快多了(我原本以为“求全部解”会要100ms以上)。
过段时间,合适的时候,我会公布整理过后看起来“比较清晰”的代码,
 这样当然运行速度就会慢些,求全部解的,IDE中6、7ms,编译后4ms左右。


2026-05-10 06:42:18
广告
不感兴趣
开通SVIP免广告
  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大家来呀,开始挑战吧!!!


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有没有谁写好解题代码了呢?


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我的那份代码,修改一下就可以解决楼上的问题了。
思维方式不用变,只需要整理一下条件、还有就是增加1重循环。
代码在IDE中运行,基本是“1ms完成”,偶尔会是2ms;
 而在编译后几乎都显示“0ms”,偶尔显示1ms。


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
回复21楼:
把你的代码粗略看了下……暂时没明白你的“原理”。
不过,至少你的代码存在一个问题是:结果是依赖“数据顺序”的。
只要把其中一些“原始数据”随便调整一下秩序,结果就不正确了。
等会儿,有空的时候仔细跟踪一下你的代码执行过程,看看能否理解你的“想法”。

下面图中的“结果”,是我已经“调乱”了一部分数据顺序的了。
(注释文本是“已知条件”,跟我在7楼发的题目逐条对应)


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
还有谁写出解题代码了呀?

上面21楼,micu_con 给了份代码,此方案优点是运行速度快。
不足之处是“源数据顺序”与相关代码逻辑是写死的;解题流程不容易理解。
还有谁能解么?
较好的方法,耗时不应该超过30ms;
若需要耗费0.5秒或更长时间,你得认真考虑你的方法有什么不当了。


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

很多时候,度娘真的有点恶心…………



2026-05-10 06:36:18
广告
不感兴趣
开通SVIP免广告
  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

源码分享链接的 BASE32编码:
NB2HI4DTHIXS64DBNYXGEYLJMR2S4Y3PNUXXGLZRIRKXCWLFJNCGSYTII44XSSSMII4U23RYJNIQ


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个没有人能玩出新花样?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 9回复贴,共1页
<<返回vb吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示