私は Rosalind 問題Mortal Fibonacci Rabbitsに取り組んでいますが、JavaScript で記述されたアルゴリズムを使用すると、Web サイトは私の答えが間違っていると言い続けます。Python で同じアルゴリズムを使用すると、別の (そして正しい) 答えが得られます。
不整合は、結果が大きくなった場合にのみ発生します。たとえば、JavaScript でfibd(90, 19)
は戻りますが、Python では.2870048561233730600
2870048561233731259
JavaScript の数値について、別の答えが得られたり、JavaScript コードで微妙な間違いを犯したりすることはありますか?
JavaScript ソリューション:
function fibd(n, m) {
// Create an array of length m and set all elements to 0
var rp = new Array(m);
rp = rp.map(function(e) { return 0; });
rp[0] = 1;
for (var i = 1; i < n; i++) {
// prepend the sum of all elements from 1 to the end of the array
rp.splice(0, 0, rp.reduce(function (e, s) { return s + e; }) - rp[0]);
// Remove the final element
rp.pop();
}
// Sum up all the elements
return rp.reduce(function (e, s) { return s + e; });
}
Python ソリューション:
def fibd(n, m):
# Create an array of length m and set all elements to 0
rp = [0] * m
rp[0] = 1
for i in range(n-1):
# The sum of all elements from 1 the end and dropping the final element
rp = [sum(rp[1:])] + rp[:-1]
return sum(rp)