ruby 使用FizzBuzz进行Big O练习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 使用FizzBuzz进行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 使用FizzBuzz进行Big O练习的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp FizzBuzz只用了一点点就解决了。它本质上使用两个确定性有限自动机进行可分性测试。
C#FizzBu zz交换机解决方案
javascript FizzBuzz
javascript FizzBuzz
javascript FizzBuzz
markdown FizzBuzz