ruby 使用FizzBu​​zz进行Big O练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 使用FizzBu​​zz进行Big O练习相关的知识,希望对你有一定的参考价值。

def mult_generator limit, multiple
  0.step(limit, multiple).to_a
end
 
 
def fizzbuzzify values_hash
  values_hash.each_pair do |k,v|
    v.each { |v| @answer[v-1] = k.to_s }
  end
  @answer
end
 
 
def bzzt! limit, mult_ary
  @answer = (1..limit).to_a
  m1 = mult_ary[0] ; m2 = mult_ary[1]
  values  = {
    fizz:     mult_generator(limit, m1),
    buzz:     mult_generator(limit, m2),
    fizzbuzz: mult_generator(limit, m1*m2)
  }
  fizzbuzzify values
end 


# Swapped out Array#&
#def bzzt! limit, mult_ary
#  @answer = (1..limit).to_a
#  values  = { 
#    fizz: mult_generator(limit, mult_ary[0]), 
#    buzz: mult_generator(limit, mult_ary[1])
#  }
#  values[:fizzbuzz] = values[:fizz] & values[:buzz]
#  fizzbuzzify values
#end


bzzt! 1000, [5,7]

### Benchmark results ###

# "1000, 5, 7"
#   0.000000   0.000000   0.000000 (  0.000459)
# "5000, 5, 7"
#   0.000000   0.010000   0.010000 (  0.003200)
# "10000, 5, 7"
#   0.010000   0.000000   0.010000 (  0.002955)
# "100000, 5, 7"
#   0.030000   0.000000   0.030000 (  0.032995)
# "10,000,000, 5, 7"
#   5.850000   0.590000   6.440000 (  6.450806)

以上是关于ruby 使用FizzBu​​zz进行Big O练习的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp FizzBu​​zz只用了一点点就解决了。它本质上使用两个确定性有限自动机进行可分性测试。

C#FizzBu zz交换机解决方案

javascript FizzBu​​zz

javascript FizzBu​​zz

javascript FizzBu​​zz

markdown FizzBu​​zz