设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1090|回复: 2
打印 上一主题 下一主题

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

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
200 小时
注册时间
2008-3-1
帖子
360
跳转到指定楼层
1
发表于 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"

Lv1.梦旅人

梦石
0
星屑
110
在线时间
953 小时
注册时间
2007-4-25
帖子
805
2
发表于 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
复制代码
���
[email protected]:~> repeat 1 fortune
Matz is nice, so we are nice.
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
200 小时
注册时间
2008-3-1
帖子
360
3
 楼主| 发表于 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 "有交集"
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-24 03:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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