Project1

标题: 求交集的算法怎么写? [打印本页]

作者: 木许许    时间: 2011-11-10 08:54
标题: 求交集的算法怎么写?
本帖最后由 木许许 于 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"dsu_plus_rewardpost_czw
作者: 苏小脉    时间: 2011-11-10 10:09
本帖最后由 苏小脉 于 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
复制代码
���
作者: 木许许    时间: 2011-11-10 11:00
本帖最后由 木许许 于 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 "有交集"




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1