查看: 1249|回复: 2

[已经解决] 求交集的算法怎么写?

  [复制链接]
梦石
0
星屑
50
在线时间
200 小时
注册时间
2008-3-1
回帖
258
发表于 2011-11-10 08:54:50 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 木许许 于 2011-11-10 08:58 编辑

如果我要判断:当队伍1号角色装备的武器属性编号1~50和20~50之间没有交集,应该怎么写?下面这样不对啊。。

if $data_weapons[$game_party.actors[0].weapon_id].element_set.include?(1..50)  &  $data_weapons[$game_party.actors[0].weapon_id].element_set.include?(20..50) == [ ]
  p "没有交集"
else
  p "有交集
end"
梦石
0
星屑
310
在线时间
953 小时
注册时间
2007-4-25
回帖
798
发表于 2011-11-10 10:09:55 | 显示全部楼层
本帖最后由 苏小脉 于 2011-11-10 10:14 编辑

Array#include? 是用来检查数组中是否包含特定元素的,它返回 true/false,之后再在 true/false 值上用 & 调用的就是 TrueClass#& 或 FalseCLass#&,成了逻辑运算,而不是预期的 Array#&。Array#include? 接受单个元素,并没有传递元素范围这样的用法。

你想要的或许是:
  1. a1 = [ 1, 2, 3, 4, 5 ]
  2. a2 = [ 3, 5, 7, 9 ]
  3. p a1 & a2                   # => [ 3, 5 ]

  4. p a1[0..2] & a2[1..3] == [] # => [ 1, 2 ] & [ 5, 7, 9 ] == [] => true
复制代码
���
su@rpg.blue:~> repeat 1 fortune
Matz is nice, so we are nice.
回复

使用道具 举报

梦石
0
星屑
50
在线时间
200 小时
注册时间
2008-3-1
回帖
258
 楼主| 发表于 2011-11-10 11:00:25 | 显示全部楼层
本帖最后由 木许许 于 2011-11-10 11:01 编辑
苏小脉 发表于 2011-11-10 10:09
Array#include? 是用来检查数组中是否包含特定元素的,它返回 true/false,之后再在 true/false 值上用 &  ...


啊呀,我这样写怎么不对了?

if $data_weapons[$game_party.actors[0].weapon_id].element_set & [20..50] == []
p "没交集"
else
p "有交集"
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部