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

Project1

 找回密码
 注册会员
搜索
查看: 114|回复: 3

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

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7769
在线时间
739 小时
注册时间
2006-11-10
帖子
5006
发表于 2018-3-13 11:33:29 | 显示全部楼层 |阅读模式

加入我们,一起完成梦想。

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

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

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

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

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

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

祥瑞御免 ,家宅平安

Lv4.逐梦者

梦石
0
星屑
6170
在线时间
3089 小时
注册时间
2012-11-19
帖子
4268

开拓者

发表于 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   各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7769
在线时间
739 小时
注册时间
2006-11-10
帖子
5006
 楼主| 发表于 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
祥瑞御免 ,家宅平安
回复 支持 反对

使用道具 举报

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

本版积分规则

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

站长信箱:fux2@moe9th.com|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2018-7-23 02:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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