考虑一个序列u,其中u定义如下:

时间:2016-02-02 07:26:18

标签: javascript

考虑一个序列u,其中u的定义如下:

数字u(0) = 1u中的第一个。 对于x中的每个uy = 2 * x + 1z = 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

1 个答案:

答案 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>');