Loading...
KatAngelova avatar KatAngelova 2 Точки

02. Number Modification - Functions - More Exercise - JS Fundamentals

Здравейте, реших тази задача по някаква моя си много завъртяна логика с идеята да използвам последните научени неща, за да ги упражня. Джъдж обаче ми дава 85/100 точки и не мога да открия къде е проблемът в кода. Знам,че има по кратко решение, вече разгледах такива, но ми се искаше да намеря и грешката в моето..

Това е решението: https://pastebin.com/Zh5guTmw

Линк към задачата: https://judge.softuni.bg/Contests/Practice/Index/1292#1

Тагове:
0
JavaScript Fundamentals
willystyle avatar willystyle 2472 Точки

ами грешен ти е алгоритъма, например пусни 18, или друго двуцифрено число, чиято средна сума на цифри е под 5.

0
Axiomatik avatar Axiomatik 2422 Точки

Wow, when compared to other solutions this code is more complicated than it needs to be. The main problem came from the following validation, where you compared arrayLength with 3. That 3 only works with numbers that have exactly a length of 3.


             if (averageSum <= 5 && arrayLength >= 3) {
                 array.push('9');
             } else if (averageSum > 5) {
                 break;
             }

There were also some other issues with the loopTheArr function, but still your code gives 100%. 

Best,

function modify(number) {
    let array = [];

    let string = numAsString(number);
    let createdArray = createArray(number);
    let forLoop = loopTheArr(array);
    let final = makeArrOfNumbers(forLoop);

    console.log(final.join(''));

    function numAsString(n) {
        let result = `${n}`;
        return result;
    }

    function createArray(n) {
        array = string.split('');
        return array;
    }

    function loopTheArr(arr) {
        let sum = 0;
        let averageSum = 0;
        let numberCount = 0;
        let arrayLength = 0;

        for (let i = 0; i < arr.length; i++) {
            numberCount++;
            arrayLength++;
            let currentNum = Number(arr[i]);
            sum += currentNum;
            averageSum = sum / numberCount;
            // averageSum = sum / arr.length;

            // if (averageSum <= 5 && arrayLength >= 3) {
            //     array.push('9');
            // } else if (averageSum > 5) {
            //     break;
            // }

            if (averageSum <= 5 && i >= arr.length - 1) {
                // array.push('9');
                arr.push('9');
            } else if (averageSum > 5 && i == arr.length - 1) {
                break;
            }
        }

        // return array;
        return arr;
    }

    function makeArrOfNumbers(arr) {
        let finalArray = [];
        for (let number of arr) {
            let currentNum = Number(number);
            finalArray.push(currentNum);
        }
        return finalArray;
    }

}

 

0
KatAngelova avatar KatAngelova 2 Точки

Благодаря, оправих го!

0
BorislavAG avatar BorislavAG 1 Точки

Привет, колеги!
Това е моето решение на задачата.
 

function modificateNumber(number) {
  let num = number.toString();
  let sum = 0;

  const append = n => (num += n);

  while (sum / num.length <= 5) {

    for (let i = 0; i < num.length; i++) {
      let n = Number(num[i]);
      sum += n;
    }

    if (sum / num.length <= 5) {
      append(9);
      sum = 0;
    }
  }
  
  console.log(num);
}

 

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