【发布时间】:2014-11-13 18:41:11
【问题描述】:
我正在处理this hackerrank challenge。
我想试试 ruby 的问题,这是我写的代码:
gets.to_i.times do
num_people = gets.to_i
num_people_factorial = (1..num_people).inject(:*) || 1
numerator = num_people_factorial
if num_people > 2
denominator = 2*((1..num_people - 2).inject(:*) || 1)
elsif num_people == 2
denominator = 2
else
denominator = 10000
end
puts numerator / denominator
end
问题是,当我在我的计算机上运行它时,我得到了正确的答案,但是当我通过 Hackerrank 的系统运行它时,测试用例超时 - 它们执行速度不够快,无法进行评分。
如何优化此代码?
编辑:当我提交此代码时,我看到了以下结果:
【问题讨论】:
-
我去了该网站并准确地复制粘贴了您的编码并运行了编码。它与他们的测试用例完美配合。
-
您只是“运行”还是“提交”了代码?因为我现在已经提交了 3 次代码,10 个测试用例中只通过了 3 个
-
老实说,不想提交您的编码。你可以使用这样的东西:tot = 1; 1.step(i,1).to_a.each { |x| tot=tot*x };总算
-
显然添加了他的“约束”和规则,但这应该是所有工作本身
-
这个问题似乎离题了,因为它是关于工作代码的重构和代码审查。 Code Review 比 Stack Overflow 更合适。
标签: ruby performance algorithm combinations