Ruby 10 行令你朋友惊讶的 ruby 代码

chenge · 发布于 2013年1月10日 · 最后由 chenge 回复于 2016年7月04日 · 2619 次阅读
4215
共收到 4 条回复
4215
chenge · #1 · 2013年1月10日

埃拉托斯特尼筛法

埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种公元前250年由古希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。

#参考wikipedia,求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   
96
chyanog · #2 · 2013年1月11日

有空我写个mathematica版的

2880
luikore · #3 · 2013年1月12日 2 个赞

了解 API 可以少写很多代码

3 词汇表可以用 Regexp.union

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

p !(tweet !~ Regexp.union(words))

10 素数判定不用自己实现啦

require 'mathn'
p Prime.take_while{|n| n<120}
2880
luikore · #4 · 2013年1月12日 2 个赞

11 解多元线性方程组

require 'matrix'
m = Matrix[[2, 3], [1, 4]]
p m.lup_decomposition.solve([2, 3]).to_a
#=> [(-1/5), (4/5)]

12 分解质因数 (其实实现比较简单, 大数还是 mathematica 内建的算法比较快)

require 'mathn'
p 123232913892382.prime_division
#=> [[2, 1], [7, 1], [17, 1], [4519, 1], [114579631, 1]]
4215 chenge Ruby 学习汇集,请推荐内容 中提及了此贴 7月04日 11:35
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册