我有大舌头 发表于 2010-11-10 15:26

RUBY小试题,高手们都来式下啊

作者:rainchen
题目:
有52张扑克牌要随机发牌给四个玩家,并且四个玩家牌的数量是相同的?
用最精简的ruby语言写出来
结果示例:
=> [, [37, 11, 26, 45, 28, 27
, 35, 29, 41, 15, 5, 20, 21], , [
49, 48, 10, 4, 33, 14, 34, 40, 24, 50, 52, 19, 6]]

其实是一则看到 求职版的这篇 今天面试遇到了雷人面试题求解 所启发,再则是延续下"Ruby每周一测"这个系列,三是活跃下本版气氛。

以下是我的解答版本,欢迎PK :
      ruby代码:(1..52).sort_by{rand}.inject(,[],[],[]]){|r,i|r[(r+=1)%4+1]<<i;r}

zuerrong 发表于 2010-11-10 16:10

不是最短,但最清楚:

x=(1..52).sort_by{rand};y=[];0.step(51,13) do |c| y << x end

fiyuer 发表于 2010-11-11 18:15

x=(1..52).sort_by{rand};
(0..3).map{|t| x}
页: [1]
查看完整版本: RUBY小试题,高手们都来式下啊