考虑一个序列u,其中u的定义如下:
数字u(0) = 1
是u
中的第一个。
对于x
中的每个u
,y = 2 * x + 1
和z = 3 * x + 1
也必须在您身上。
你身上没有其他数字。
例如:u = [1, 3, 4, 7, 9, 10, 13, 15, 19, 21, 22, 27, ...]
1给出3和4,然后3给出7和10,4给出9和13,然后7得到15和22等等......
任务:
给定参数n
,函数dbl_linear
(或dblLinear
...)返回有序({< =)序列{{1}的元素u(n)
}。
示例:
u
应该返回dbl_linear(10)
我试过了:
22
这是codeWars中的原始链接: 无法考虑测试。帮助 - > link
答案 0 :(得分:0)
此解决方案为每个计算值提供一个数组,直到计算出所需元素。
u 0 1 2 3 4 5 6 7 8 9 10 11 12 13 element v 1 3 4 7 9 10 13 15 19 21 22 27 28 31 value 0 1 1 1 3 1 * 2 + 1 1 4 1 * 3 + 1 3 7 3 * 2 + 1 3 10 3 * 3 + 1 4 9 4 * 2 + 1 4 13 4 * 3 + 1 7 15 7 * 2 + 1 7 22 7 * 3 + 1 9 19 9 * 2 + 1 9 28 9 * 3 + 1 10 21 10 * 2 + 1 10 31 10 * 3 + 1
var array = [1],
i = 0;
function add(v) {
array.some(function (a, i) {
if (a >= v) {
a > v && array.splice(i, 0, v);
return true;
}
}) || array.push(v);
}
while (i < 10) {
add(array[i] * 2 + 1);
add(array[i] * 3 + 1);
i++;
}
document.write('u(10): ' + array[10]);
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');