Ruby 按条件重排数组元素

bluexuemei · 2014年07月06日 · 最后由 saitubao 回复于 2014年07月17日 · 2738 次阅读

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 楼 已删除

#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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号