Ruby 按条件重排数组元素

bluexuemei · July 06, 2014 · Last by saitubao replied at July 17, 2014 · 2730 hits

arr=["Beijing","Beijing","Beijing","Tokyo","Tokyo","Tokyo","New York","New York","Paris"] 这个数组共 9 个元素,我想把它分成 3 个区域:0-2,3-5,6-8。我想把它按条件重排,要求每个区域中的三个元素各不相同,而且这 3 个元素随机排列,得到的结果如下所示: result_arr=["Tokyo","Beijing","New York","Paris","Beijing","Tokyo","Beijing","New York","Tokyo"]。怎么解决比较方便?

这个问题太简单了所以没有人愿意提供帮助吗? arr.each_slice(3).to_a.transpose.map(&:shuffle).shuffle

#1 楼 @bluexuemei 星期天,来的人少

3 Floor has deleted

#1 楼 @bluexuemei 最后应该是 flatten 吧 arr.each_slice(3).to_a.transpose.map(&:shuffle).flatten

#4 楼 @aiyanxu arr.each_slice(3).to_a.transpose.map(&:shuffle).shuffle.flatten

arr.each_slice(3).to_a.transpose.map(&:shuffle).shuffle.flatten

You need to Sign in before reply, if you don't have an account, please Sign up first.