Софтуерно Инженерство
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
])

 

Тагове:
willystyle avatar willystyle 1297 Точки
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