查看: 2771|回复: 3

[已经解决] 求个计算方法~~

[复制链接]
梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2018-3-13 11:33:29 | 显示全部楼层 |阅读模式

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

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

×
本来觉得很容易计算出来的结果,结果越写越长,花了一个早上最后还是错的,实在没辙了,求大大帮忙

题目: 一数组, size == 5。 内容包含 nil, 0 , 正整数, 负整数 这四种,数值没有规律且有可能数个值相同。  F = [a,b,c,d,e]

想要的结果, 从数组F中获得一个正整数,如果数组里没有正整数,那就得到负整数,如果也没负整数,那就得到0或nil

额外要求(重点): 得到数值的优先度要按数组的顺序排列。 即:F[0]如果是正整数,那就返回它,如果没有,就看后面的F[1]... 如果数组里都没有 正整数,那就再按顺序 看F[0]是不是负整数,是的话返回它,不是继续看F[1]....

求计算方法~~ 可以的话,越短越好...(某菜刀写的方法从707-805,结果又臭又长还是错的 = =....)

梦石
0
星屑
34459
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2018-3-13 11:47:40 | 显示全部楼层
data = f.find{|n| n && n > 0}
data = f.find{|n| n && n < 0}  if !data
data = f[0] if !data
p data

评分

参与人数 2星屑 +70 赞 +1 收起 理由
RyanBern + 70 认可答案
灯笼菜刀王 + 1 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
 楼主| 发表于 2018-3-13 11:57:49 | 显示全部楼层
芯☆淡茹水 发表于 2018-3-13 11:47
data = f.find{|n| n && n > 0}
data = f.find{|n| n && n < 0}  if !data
data = f[0] if !data

感谢大大,又学了个新方法,一个find就省了一串的if...elsif ....

点评

也可以写作一行:data = f.find{|n| n && n > 0} || f.find{|n| n && n < 0} || f[0]  发表于 2018-3-13 12:01
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部