Math 按顺序生成'5,3,1,3,5'的等式是什么?

Math 按顺序生成'5,3,1,3,5'的等式是什么?,math,mathematical-optimization,Math,Mathematical Optimization,昨天,为了获得新兵训练营的奖学金,我做了一次伪代码测试,一小时内回答了5个问题,5个问题中有2个没有回答。我用数学方程找不到答案 // === === === question 3 // Output: // ***** // *** // * // *** // ***** // === === === question 5 // Output: // * * // * * // * // * * // * * tl:dr 这是JavaScript中的答案,

昨天,为了获得新兵训练营的奖学金,我做了一次伪代码测试,一小时内回答了5个问题,5个问题中有2个没有回答。我用数学方程找不到答案

// === === === question 3
// Output:
// *****
//   ***
//     *
//   ***
// *****

// === === === question 5
// Output:
// *   *
//  * *
//   *
//  * *
// *   *
tl:dr

这是JavaScript中的答案,不使用数学公式。我不是数学家,也不是软件工程师。实际上,我是软件工程新手,如果您有更直接的答案,请告诉我

I assume the output as blocks / air + asterisk.

question 3

// v2 air + asterisk

function cv2() {
    for (i=5; i > 0; i--) {
        // i = [5,3,1]
        if (i %2 == 1) {
            var air = ' '.repeat(5-i);
            var asterisk = '*'.repeat(i);
            console.log(air+asterisk);
        }
    }
    for (i=3; i <= 5; i++) {
        // i = [3,5];
        if (i %2 == 1) {
            var air = ' '.repeat(5-i);
            var asterisk = '*'.repeat(i);
            console.log(air+asterisk);
        }
    }
}

cv2();

question 5

// v1

function ev1() {
    var i = 0;
    var j = 4;
    for (row = 0; row < 5; row++) {
        var result = '';
        for (col = 0; col < 5; col++) {
            if (row == i && col == j) {
                result += '*';
                i++;
                j--;
            } else if (row == col) {
                result += '*';
            } else {
                result += ' ';
            }
        }
        console.log(result);
    }
}

//ev1()
编辑:将纯数学中的
更改为使用公式

编辑:添加lukeg方程,检查函数cv4()。

编辑:尝试使用Raymond Chen的技术进行求解,检查函数cv5()和cv6()。到目前为止,失败。

您使用的数组的值为5、3、1、3和5


这很简单,可以很容易地适应任何类似的模式。

如果我理解了这个问题,您正在寻找一个生成序列5,3,1,3,5的简明公式?对于
(0,1,2,3,4)
中的x,f(x)=|-4+2*x |+1
是否满足您的需要


作为旁注,我认为这项任务与编程没有多大关系,更多的是与“aha”时刻有关。

请解释一下“纯数学”的含义。纯数学没有带“星号”的“输出”。纯数学解应该是
|x |=| y |
@RaymondChen我的意思是纯数学是“用方程求解”或
|x |=| y |
。生成
5,3,1,3,5
输出的方程式是什么。我上面写的答案不是用等式,而是用if语句和模。如果你想要一个公式,为特定的输入生成一组特定的值,你可以。但这不再是一个计算机编程问题。这是一道数学题。@RaymondChen非常感谢你。我会用这个技巧来解这个方程。谢谢你的回答。我很感激,如果你有解决这个问题的方程式,请告诉我。谢谢。这确实满足了我的需要。我同意你关于“啊哈”时刻的观点。这就是为什么我要指出@RaymondChen comment”,并解决这个问题。我用你的方程式解决了问题3。我将根据陈雷蒙的建议尝试解决问题3。我会把它贴在问题上。
// question 3
// using equation provided by @lukeg in stackoverflow.
// v4
// x = [0,1,2,3,4]
// asterisk f(x) = |-4 + 2 * x | + 1
// air f(x) = | | -4 + 2 * x | - 4 |

function cv4() {
    for (x = 0; x < 5; x++) {
        var air = Math.abs(Math.abs(-4 + 2 * x) - 4);
        var asterisk = Math.abs(-4 + 2 * x) + 1;
        console.log(' '.repeat(air) + '*'.repeat(asterisk));
    }
}

//cv4();

// v5 == failed
// asterisk f(x) = 2(x)^3 / 3 - 2(x)^2 - 2x/3 + 5

function cv5() {
    for (x = 0; x < 5; x++) {
        var asterisk = 2 * Math.pow(x,3) / 3 - 2 * Math.pow(x,2) - 2 * x / 3 + 5;
        console.log('*'.repeat(asterisk));
    }
}

//cv5()

// v6 == failed
// x = [0,1,2,3,4]
// y = [5,3,1,3,5]
// asterisk f(x) = -(x)^4 / 3 + 8(x)^3 / 3 - 17(x)^2 / 3 + 4x/3 + 5

function cv6() {
    for (x = 0; x < 5; x++) {
        var asterisk = -Math.pow(x,4) / 3 + 8 * Math.pow(x,3) / 3 - 17 * Math.pow(x,2) / 3 + 4 * x / 3 + 5;
        console.log('*'.repeat(asterisk));
    }
}

//cv6()

// v7
// equation in vertex form
// y = a | x - h | + k , vertex (h, k), another point on the right of the vertex (x2, y2);
// a = y2 - k / x2 - h
// asterisk f(x) = 2 | x - 2 | + 1 
// air f(x) = -2 | x - 2 | + 4
// x = [0,1,2,3,4] y = [5,3,1,3,5]

function cv7() {
    for (x = 0; x < 5; x++) {
        var air =  -2 * Math.abs(x - 2) + 4;
        var asterisk = 2 * Math.abs(x - 2) + 1;
        console.log(' '.repeat(air) + '*'.repeat(asterisk));
    }
}

cv7();