| 赞 | 62 |
| VIP | |
| 好人卡 | |
| 积分 | 65 |
| 经验 | |
| 最后登录 | 2025-2-24 |
| 在线时间 | 1275 小时 |
百合控
- 梦石
- 0
- 星屑
- 6548
- 在线时间
- 1275 小时
- 注册时间
- 2013-8-21
- 回帖
- 3522

|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
问题:
如何用一行语句达到如下效果:
(没错 这个题目是抄来的 @76213585 对这个问题突然有了兴趣)
(尽量不用循环)
已有的解法:
@satgo1546
[pre lang="ruby" line="1"] (rand(6) <= 4) ? (rand(4) + 3) : (rand(2) + 9)[/pre]
用了很龌龊的伪装 不过也是达到了要求
不过之前@myownroc 用到了相同的方法,只是没简化为一行
[pre lang="ruby" line="1"]a = rand(6)
if a <= 3
p rand(3) + 3 #这里好像算错了= =!
else
p rand(2) + 9
end
[/pre]
@无脑之人 用到了这个方法……很难普适,从数组中随机取
[pre lang="ruby" line="1"][3,4,5,6,9,10].[](rand(6))[/pre]
使用了循环的算法 @76213585
[pre lang="ruby" line="1"]loop do;a = rand(8)+3;if a != 7 and a != 8;p a;break;end;end[/pre]
楼主的算法(递归)
[pre lang="ruby" line="1"]def b x,y,z;z.include?(a=rand(y-x+1)+x) ? b(x,y,z) : a;end;p b(3,10,[7,8])[/pre]
仍然征求新的算法~ |
|