Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обратная Пирамида (https://javascript.ru/forum/events/61316-obratnaya-piramida.html)

hbsv 12.02.2016 23:59

Обратная Пирамида
 
Здравствуйте!

Подскажите пожалуйста правильную мысль, на кодеварс есть элементарная задача, но я ее не могу догнать)))
Нужно построить обратную пирамиду:

123456789010987654321
1234567890987654321
12345678987654321
123456787654321
1234567654321
12345654321
123454321
1234321
12321
121
1

Вот то, что есть на данный момент:
function getADownArrowOf(n) {
    for (var i = n; i >= 1; i--){
        for (var j = n; j>=1 ; j--) {
            console.log(j);
        }
    }
}


getADownArrowOf(5);


Заранее оч. Благодарен!

рони 13.02.2016 00:23

hbsv,
как-то так ... :)
<script>
function getADownArrowOf(n) {
    for (var i = n; i >= 1; i -= 2) {
        var a = "";
        for (var j = 0; j <= i / 2; j++) a += (j + 1) % 10;
        for (var j = i / 2 | 0; j--;) a += (j + 1) % 10;
        document.write(a + "<br>")
    }
};
getADownArrowOf(33);

 </script>

hhh 13.02.2016 01:24

nodequest,
123456789101987654321 - лишняя единица

nodequest 13.02.2016 01:42

hhh,
спасибо, пофиксил

nodequest 13.02.2016 01:49

hhh,
Вообще, я не то, написал, у него там какие то нули пошли дальше, я не догоняю нифига. Ну его нафиг это числодрочерство, не мое это:)

hbsv 13.02.2016 10:18

Спасибо, буду знать где рыть дальше ))

hbsv 13.02.2016 18:05

А как сделать, что бы при вводе значения (n) выводило колл-во строк?

т.е. чтоб соответствовало проверке:

Test.assertEquals(getADownArrowOf(1), "1");
Test.assertEquals(getADownArrowOf(3), "12321\n 121\n 1");
Test.assertEquals(getADownArrowOf(5), "123454321\n 1234321\n 12321\n 121\n 1");

Т.к. при значении (n) - 3 выводит две строки.

Спасибо большое!

рони 13.02.2016 19:10

hbsv,
<script>

function getADownArrowOf(n) {
    var c = [];
    for (var i = n*2-1; i >= 1; i -= 2) {
        var a = "";
        for (var j = 0; j <= i / 2; j++) a += (j + 1) % 10;
        for (var j = i / 2 | 0; j--;) a += (j + 1) % 10;
        c.push(a)
    }
    return c
};
document.write(getADownArrowOf(1)+"<br>");
document.write(getADownArrowOf(3)+"<br>");
document.write(getADownArrowOf(5)+"<br>");
document.write(getADownArrowOf(7)+"<br>");
 </script>


Часовой пояс GMT +3, время: 10:28.