Project1
标题: 有关一个问题的求解 [打印本页]
作者: 余烬之中 时间: 2013-10-19 19:24
标题: 有关一个问题的求解
问题:
如何用一行语句达到如下效果:
(没错 这个题目是抄来的 @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])
仍然征求新的算法~
作者: 恐惧剑刃 时间: 2013-10-19 19:36
- def num_p;num=rand(10)+1;unless [1, 2, 7, 8].include?(num);return num;end;end
复制代码
作者: 无脑之人 时间: 2013-10-19 20:16
- def range_random(*ranges)
- ranges.map{|i|i.to_a}
- ranges.flatten!
- ranges[rand(ranges.size)]
- end
- range_random(3..6,9..10)
复制代码
作者: satgo1546 时间: 2013-10-19 20:19
本帖最后由 satgo1546 于 2013-10-19 20:21 编辑
- (rand(2) == 1) ? (rand(3) + 3) : ((rand(3) == 2) ? 6 : rand(2) + 9)
复制代码 ↑ 应付LZ的方法
↓ 超级奇葩的方法- (rand(6) == 1) ? 3 : ((rand(5) == 1) ? 4 : ((rand(4) == 1) ? 5 : ((rand(3) == 1) ? 6 : ((rand(2) == 1) ? 9 : 10))))
复制代码
作者: orzfly 时间: 2013-10-19 20:20
本帖最后由 orzfly 于 2013-10-19 21:34 编辑
无脑之人 发表于 2013-10-19 20:16
对于没有 Array#sample 而且支持 -> 语法的
->(x){x[rand(x.size)]}.call([*3..10] - [7, 8])
->(x){x[rand(x.size)]}.call([*3..10] - [7, 8])
对于没有 Array#sample 而且不支持 -> 语法的
lambda {|x|x[rand(x.size)]}.call([*3..10] - [7, 8])
lambda {|x|x[rand(x.size)]}.call([*3..10] - [7, 8])
对于有 Array#sample 的
([*3..10] - [7, 8]).sample
([*3..10] - [7, 8]).sample
作者: 紫英晓狼1130 时间: 2013-10-19 20:25
LS各位已经正解了
作者: satgo1546 时间: 2013-10-19 20:57
@余烬之中
((rand(89) == 1) ? 3 : ((rand(88) == 1) ? 4 : ((rand(87) == 1) ? 5 : ((rand(86)== 1) ? 6 : ((rand(85) == 1) ? 7 : ((rand(84) == 1) ? 8 : ((rand(83) == 1) ? 9 : ((rand(82) == 1) ? 10 : ((rand(81) == 1) ? 11 : ((rand(80) == 1) ? 12 : ((rand(79) == 1) ? 13 : ((rand(78) == 1) ? 14 : ((rand(77) == 1) ? 15 : ((rand(76) == 1) ? 16 : ((rand(75) == 1) ? 17 : ((rand(74) == 1) ? 18 : ((rand(73) == 1) ? 19 : ((rand(72) == 1) ? 20 : ((rand(71) == 1) ? 21 : ((rand(70) == 1) ? 22 : ((rand(69) == 1) ? 23 : ((rand(68) == 1) ? 24 : ((rand(67) == 1) ? 25 : ((rand(66) == 1) ? 26 : ((rand(65) == 1) ? 28 : ((rand(64) == 1) ? 30 : ((rand(63) == 1) ? 31 : ((rand(62) == 1) ? 32 : ((rand(61) == 1) ? 33 : ((rand(60) == 1) ? 34 : ((rand(59) == 1) ? 35 : ((rand(58) == 1) ? 36 : ((rand(57) == 1) ? 37 : ((rand(56) == 1) ? 38 : ((rand(55) == 1) ? 39 : ((rand(54) == 1) ? 40 : ((rand(53) == 1) ? 41 : ((rand(52) == 1) ? 42 : ((rand(51) == 1) ? 43 : ((rand(50) == 1) ? 44 : ((rand(49) == 1) ? 45 : ((rand(48) == 1) ? 46 : ((rand(47) == 1) ? 47 : ((rand(46) == 1) ? 48 : ((rand(45) == 1) ? 49 : ((rand(44) == 1) ? 50 : ((rand(43) == 1) ? 51 : ((rand(42) == 1) ? 52 : ((rand(41) == 1) ? 53 : ((rand(40) == 1) ? 54 : ((rand(39) == 1) ? 55 : ((rand(38) == 1) ? 56 : ((rand(37) == 1) ? 57 : ((rand(36) == 1) ? 58 : ((rand(35) == 1) ? 59 : ((rand(34) == 1) ? 60 : ((rand(33) == 1) ? 61 : ((rand(32) == 1) ? 62 : ((rand(31) == 1) ? 63 : ((rand(30) == 1) ? 64 : ((rand(29) == 1) ? 66 : ((rand(28) == 1) ? 67 : ((rand(27) == 1) ? 68 : ((rand(26) == 1) ? 69 : ((rand(25) == 1) ? 70 : ((rand(24) == 1) ? 71 : ((rand(23) == 1) ? 73 : ((rand(22) == 1) ? 74 : ((rand(21) == 1) ? 75 : ((rand(20) == 1) ? 76 : ((rand(19) == 1) ? 79 : ((rand(18) == 1) ? 80 : ((rand(17) == 1) ? 81 : ((rand(16) == 1) ? 84 : ((rand(15) == 1) ? 85 : ((rand(14) == 1) ? 86 : ((rand(13) == 1) ? 87 : ((rand(12) == 1) ? 88 : ((rand(11) == 1) ? 89 : ((rand(10) == 1) ? 90 : ((rand(9) == 1) ? 91 : ((rand(8) == 1) ? 92 : ((rand(7) == 1) ? 93 : ((rand(6) == 1) ?95 : ((rand(5) == 1) ? 96 : ((rand(4) == 1) ? 97 : ((rand(3) == 1) ? 98 : 99)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
作者: 各种压力的猫君 时间: 2013-10-19 21:19
何必简单问题复杂化还搞什么循环……针对这个问题来说这种思路明显最简单。
至于用 + 还是 += 看你需要咯……
作者: Sunny.J 时间: 2013-10-19 22:35
不明觉厉
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |