打印

[结]2008-03-14 测试题(00001)

本主题由 drive2me 于 2008-3-14 11:59 加入精华

我的第一道题



def main(max)
  sum = 0
  for i in 1 ... max
    if (i % 3 == 0) or (i % 5 == 0)
      sum += i
    end
  end
  return sum
end
puts main(10000)


我是从RPG MAKER XP 了解ruby的。。大家呢?

[ 本帖最后由 martin 于 2008-3-17 09:51 编辑 ]
本帖最近评分记录
  • martin R币 +5 答题分:) 多谢支持和参与,希望继续。 ... 2008-3-17 10:31

TOP

周未,我也来玩玩:)

x=0
1.upto(10000){|i| x+= i if i % 3 == 0 || i % 5 == 0}
puts x


方法二:
puts (1..10000).find_all{|i| i%3==0 || i%5==0}.inject{|sum,item| sum+item}

[ 本帖最后由 martin 于 2008-3-17 09:52 编辑 ]
本帖最近评分记录
  • martin R币 +5 答题分:) 多谢支持和参与,希望继续。 ... 2008-3-17 10:31
success = 9999999.times{ handle ruby }

TOP

我还是不会弄,怎么办呢?

TOP



$max = 9999

def s(x)
  n = $max / x
  x * n * (n + 1) / 2
end


p s(3) + s(5) - s(15)

23331668

尽管穷举有时候确实挺管用,但当数字足够大的时候(比如1个亿),楼上很多人就该考虑考虑算法了。
比较有意思的是,考察一下最大值为10的1次方到10次方得到的结果

[1, 23]
[2, 2318]
[3, 233168]
[4, 23331668]
[5, 2333316668]
[6, 233333166668]
[7, 23333331666668]
[8, 2333333316666668]
[9, 233333333166666668]
[10, 23333333331666666668]


如果题目限定一些条件的话,也许我们可以用类似 "23" + "3" * n + "1" + "6" * n + "8" 这样的式子手工计算结果。

[ 本帖最后由 martin 于 2008-3-17 09:52 编辑 ]
本帖最近评分记录
  • lgn21st R币 +10 无疑这个解是我看到的里面最好的! 2008-3-17 23:08
  • martin R币 +5 答题分:) 多谢支持和参与,希望继续。 ... 2008-3-17 10:31

TOP

偶也来解题

第一题,貌似穷举就能得出答案:

(1..10000).select{|i|i%3==0||i%5==0}.inject(0){|sum,i|sum+i}


第二题,不得不成认自己前日学到一个技巧,貌似刚好就是为了处理这个问题:
我认为Martin出题的本意就是减少判断对象是否存在的这个步骤,不用每次都unless一下对象的.nil?方法

module ObjectExtension
  def nil_or
    return self unless self.nil?
    Class.new do
      def method_missing(sym, *args); nil; end
    end.new
  end  
end

class Object
  include ObjectExtension
end

# 用法是
@comment.user.nil_or.login


[ 本帖最后由 martin 于 2008-3-17 09:52 编辑 ]
本帖最近评分记录
  • blackanger R币 +10 学习了。 2008-3-17 11:57
  • martin R币 +10 答题分:) 多谢支持和参与,希望继续。 ... 2008-3-17 10:32

TOP

引用:
原帖由 liumuqing 于 2008-3-15 19:44 发表
**** 本内容被作者隐藏 *****


我是从RPG MAKER XP 了解ruby的。。大家呢?
谢谢参加我们的讨论。我们是从各种渠道了解Ruby的。
就比如我吧,我自己正在寻找一种比Java更简练等有效率的开发语言和平台时,我们的日本客户要我们调查一下Ruby用于文档开发的问题。这下我找到了Ruby,认为它就是我要找那种语言,并且Rails就是我要的那种有效的开发平台。呵呵!
Flying Piggy...! 
天地人合一!

TOP

引用:
原帖由 qseawd520 于 2008-3-16 01:56 发表
我还是不会弄,怎么办呢?
带着这个具体的问题,去读Ruby的相关书籍,学习后,再来试,并和大家的答案作比较,你就可以进步很快。
这就是我们的社区管理元开办这个版块的主要目的,使大家加入进来,积极讨论,互相比较,加快进步的步伐!

希望广大会员加入进来,只要你参加讨论,就必有收获。这里的答案很多,可以自由比较和讨论。但你一定要先回答才能看到其他人的答案哟。

来吧,不要放弃每一个学习和提高的机会!
Flying Piggy...! 
天地人合一!

TOP

引用:
原帖由 liumuqing 于 2008-3-15 19:44 发表

我是从RPG MAKER XP 了解ruby的。。大家呢?
同道中人

TOP

呵呵,看来这个栏目开的不错:)如此的热火朝天,真开心

TOP

本帖隐藏的内容需要回复才可以浏览


[ 本帖最后由 rubylangji 于 2008-3-17 22:27 编辑 ]

TOP

我想学习学习!

我也想提升一下!

TOP

我学到了!
def Euler1(x)
sum = 0
(1...x).each{|i| sum += i if (i % 3 == 0 || i % 5 == 0)}
puts sum
end
他写的很好
本帖最近评分记录
  • manti R币 +3 我很赞同 2008-3-26 09:43

TOP

以后我也参加! 谢谢! 我有兴趣了!~

TOP

真是不错的题目呀不过发现自己的脑袋比较笨做不出来哦。

TOP

初学者,想看看答案。顺便看看代码风格。
自己用C写了个代码,大概5行吧(穷举法),没想到RUBY一行就解决了!
真是一个神奇的语言阿!!!

[ 本帖最后由 snakeqx 于 2008-4-2 14:58 编辑 ]

TOP

2008-11-23 22:13 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61