4Ruby分级题目参考答案

闲话几句

最近学习Clojure语言,4Clojure这种分级题目的方式感觉不错,受此启发,网上没发现类似的Ruby题目,就自己收集一个,抛砖引玉。

欢迎大家推荐有趣的题目。

入门

1 . 显示“hello world”

puts 'hello world'

2 . 显示3+2-5的结果

puts 3+2-5

3 . “hello world"转换为大写

'hello world'.upcase

4 . 写一个add加法函数,参数a、b

def add(a, b)
  a + b
end

初级

1 . 计算1到10的累加

(1..10).reduce(:+)

2 . 列表1..10中的每项乘2

(1..10).map {|n| n*2}

3 . 检查字符串tweet是否包括单词

words = ["scala", "akka", "play framework", "sbt", "typesafe"]
tweet = "This is an example tweet talking about scala and sbt."

p words.any? { |word| tweet.include?(word) } 

中级

1 . 实现快速排序

def qs a
  (pivot = a.pop) ? 
    qs(a.select{|i| i <= pivot}) + [pivot] + qs(a.select{|i| i > pivot}) :
    []
end

2 . 写出加法函数的单元测试

require "minitest/autorun"


def add(a, b)
  a + b
end


class TestCalc < MiniTest::Test

  def test_add
    assert add(2, 5) == 7
  end

end

3 . 埃拉托斯特尼筛法,求120以内的素数

n=120
primes = Array.new
for i in 0..n-2
 primes[i] = i+2
end   
index = 0 
while primes[index]**2 <= primes.last
      prime = primes[index]
      primes = primes.select { |x| x == prime || x % prime != 0 }
      index += 1
end
p primes 

高级

  1. 值对象:EmailAddress

class EmailAddress
  include Comparable

  def initialize(string)
    if string =~ /@/
      @raw_email_address = string.downcase.strip
    else
      raise ArgumentError, "email address must have an '@'"
    end
  end

  def <=>(other)
    raw_email_address <=> other
  end

  def to_s
    raw_email_address
  end

  protected

  attr_reader :raw_email_address
end

2.(待定)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值