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