Loading...
+ Нов въпрос
KristianZanev avatar KristianZanev 16 Точки

3. Кодиране -малък проблем със задачата

Здравейте, проблема със задачката е малък просто трябва да се долепят символите един до друг,  печатат се правилните символи , но в една колона. Не мога да се сетя как ставаше, пробвах варианти и не се получи. Линк към задачата 

function coding(input) {

    let n = Number(input.shift());;
    let num = n.toString();
    let lastNum = n;
    let string = '';

    for (let i = 0; i < num.length; i++) {
        let number = lastNum % 10;
        let lastDigit = (lastNum - number) / 10;
        lastNum = lastDigit;
        if (number == 0) {
            console.log("ZERO");
        }
        for (let j = 0; j < number; j++) {
            let ascii = number + 33;
            let symbol = String.fromCharCode(ascii);

            // string = string + symbol;

            console.log(symbol);

        }

        console.log();
    }
}

coding([
    9347439
])

 

Тагове:
0
Programming Basics
willystyle avatar willystyle 2469 Точки
Best Answer
function coding([number]) {    
    let currentNumber = number;    
    for (let i = 0; i < number.toString().length; i++) {
        let lastDigit = currentNumber % 10;
        currentNumber = Math.floor(currentNumber / 10);        
        if (lastDigit == 0) {
            console.log("ZERO");
            continue;
        }        
        let symbolRow = '';
        for (let j = 0; j < lastDigit; j++) {
            let ascii = lastDigit + 33;
            symbolRow += String.fromCharCode(ascii);
        }
        console.log(symbolRow);        
    }
}

Товa e чрез конкатенация, а ти може би искаш директно, това става чрез фунцията repeat() :

 

function coding([number]) {    
    let currentNumber = number;    
    for (let i = 0; i < number.toString().length; i++) {
        let lastDigit = currentNumber % 10;
        currentNumber = Math.floor(currentNumber / 10);        
        if (lastDigit == 0) {
            console.log("ZERO");            
        } else {
            console.log(String.fromCharCode(lastDigit + 33).repeat(lastDigit));     
        }           
    }
}

A като махнеш и излишните променливи става най-компактно:

function coding([number]) {    
    while (number > 0) {
        let lastDigit = number % 10;
        number = Math.floor(number / 10);        
        if (lastDigit == 0) console.log("ZERO");
        else console.log(String.fromCharCode(lastDigit + 33).repeat(lastDigit));                   
    }
}
0
23/02/2019 10:59:54
KristianZanev avatar KristianZanev 16 Точки

Благодаря много проработи

0
TeodorStefanovPld avatar TeodorStefanovPld 1275 Точки

има един много удобен метод в javascript splice вместо да въртиш тоя  цикъл да повтарящ символа.

let ascii = number + 33;

let symbol = String.fromCharCode(ascii);

let result=' ';

result.splice(0,number,symbol);

не съм сигурен за точния синтаксис идеята е че като го погледнеш в нета,така към празния резулт ще добавиш толкова пъти символа които ти трябва и накрая само го печаташ.

0
badsector avatar badsector 18 Точки

В javascript явно не може директно да се указва на изхода да се принтира на един ред. Там console.log() винаги е равно на Console.WriteLine() и това е. Сега мъча задачите и варианта, който е за нашето ниво, е да се направи една нова променлива тип стринг, в която да се добавят един по един изходните резултати. Т.е. някъде извън циклите слагаш една глобална променлива примерно let output = ""; за да се знае, че е стринг. След това, където правиш проверките, вместо да принтираш резултата, го вкарваш в тази променлива - output += result + " "; Така слагаш и интервал след разултата. Реално за всеки резултат стойността на тази глобална променлива тип стринг, ще е резултат1 + резултат2 + резултат3 и т.н. Накрая, пак извън всички цикли, принтираш тази променлива и си готов.

let output = "";

for (let n = 1; n <= currentDigit; n++) {

output += String.fromCharCode(currentDigit + 33);

}

console.log(output);

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.