Balanced Numbers

Привет Колеги,
малко помощ за задача Balanced Numbers- Mock Exam-1.
Не се сещам как да я подкарам…

Здравей колега,
имаме няколко условия, които трябва да вземем под внимание:

1.Създаваме променлива в която ще пазим сумата на балансираните числа.
2. По условие не знаем колко числа ще четем, значи ще ни трябва while или do while циъкл.
3. Вътре в цикъла, четем трицифрени числа (тук имаме поне две опции, да ги четем като string или като int):
Взимаме първият и последният индекс, парсваме ги към int, сумираме ги и ги сравняваме дали са равни на средният индекс.
Ако са равни увеличаваме сумата със стойността на даденото число (може да го пазим в отделна променлива или както ни е удобно ).

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

Успех.

1 Like

Здравейте,

Опитвам се да тествам локално кода си, използвайки code snippet-а от judge.

Виждам в задачата примерен input, но както и да го подам след “const test”, не успявам да получа правилен отговор, дори с верните решения.

Дали някой може да даде съвет как да въведа input данните, за да тествам някои сценарии?

Благодаря предварително!

Здравей Колежке,

Ако може изпрати кода си, да видим защо се чупи.

Имаш поне два варианта:

  1. Правим do-while (гарантирано влизаме поне веднъж във циъкл), четем число/а и правим проверка докато не стигнем до
    "You should stop when an unbalanced number is given.". Тогава излизаме от цикъла и принтираме резултата.

2.Правим While{} цикъл, в момента в който числото което сме прочели не е балансирано излизаме и принтираме сумата.

Поздрави,
Мишо

Взех уж правилно решение на готово, за да тествам локално при мен. По идея трябва да получа 132, но резултатът при мен е 0…
Стигнах до извода, че може би не подавам правилно Input-а при const test, но както и да го поправя, не получавам правилен резултат.

Сигурно е нещо елементатно, което пропускам, но не виждам вече втори ден какво е.

Благодаря за съдействието!

//testing locally
const getGets = (arr) => {
let index = 0;

return () => {
    const toReturn = arr[index];
    index += 1;
    return toReturn;
};

};
// this is the test
const test =
[‘123’,
‘132’];

const gets = this.gets || getGets(test);
const print = this.print || console.log;

//snippet taken from https://judge.telerikacademy.com/problem/15balancednumbers/editorial

let sum = 0;

while (true) {
let [x, y, z] = gets();
if (+x + +z !== +y) {
break;
}
sum += +(x + y + z);
}

print(sum);

Здравейте,
включвам се в последния момен :slight_smile:
Имам следното питане: В условието никъде не е казано колко числа ще трябва да се четат, има само не повече от 1000. Как прекъсвате цикъла ако не знаете колко числа ще има за вход? Или винаги ще има небалансирано число, което да прекъсне цикъла?

Здравей,
по-нагоре по веригата е описан алгоритъмът - с while цикъл.

В някакъв момент винаги ще ти се подава небалансирано число (според условието най-късно след подадени 999 балансирани), за да излезеш от цикъла и да принтираш резултата.

Успех!

Здравейте!
Моята задача работи, изключвайки момента в който трябва да събера въведените балансирани числа.
Някой може ли да я погледне и да ми даде насоки?
Balanced numbers - Pastebin.com :slightly_smiling_face:

Погледнах я . Махни for цикъла , вместо негоизкарай while цикъла най-отгоре в програмата: Нека изглежда така :
bool isBallanced = true;

        int sum = 0;

        while (isBallanced)

        {

            int number = int.Parse(Console.ReadLine());

            int temp = number;

            int firstDigit = temp % 10;

            temp /= 10;

            int secondDigit = temp % 10;

            temp /= 10;

            int thirdDigit = temp % 10;

            if (firstDigit + thirdDigit == secondDigit)

            {

                sum += number;

            }

            else

            {

                isBallanced = false;                    

            }

        }

        Console.WriteLine(sum);

    }

}