Проблем с решението на задача "Tribonaci" - JavaScript

Здравейте,

Отново ударих на камък със задача от Judge. Става въпрос за Tribonacci. Връща ми WrongAnswer още на първия тест. Локално отново кода работи без проблем. Качих го пробно да видя до къде ще мине без BigInteger, но въобще не стигна до там. Прилагам и кода:

    let firstNumber = +gets();
    let secondNumber = +gets();
    let thirdNumber = +gets();
    let n = +gets();
    result = 0;

    if (n === 1) {
        console.log(firstNumber);
    } else if (n === 2) {
        console.log(secondNumber);
    } else if (n === 3) {
        console.log(thirdNumber);
    } else {

        for (let index = 3; index < n; index++) {
            result = firstNumber + secondNumber + thirdNumber;
            firstNumber = secondNumber;
            secondNumber = thirdNumber;
            thirdNumber = result;
        }
        console.log(result);
    }

Локално пробвах с двата примерни теста, дадени в задачата и работи коректно.

Поздрави.

Смени console.log(number) с print(number).
https://judge.telerikacademy.com/usage/js/ Прочети това и използвай snippet-а който е даден.

2 Likes

Оф боже…
Благодаря :smiley:

Здравейте.
Аз като се опитам да използвам gets() и ми връща грешка “gets is not defined”, с print е същото.
Къде бъркам ?
Използвам Visual Studio Code с node.js
Поздрави.

Edit:
Пробвах и в браузъра пак връща, че gets() не е дефинирано.
Някоя библиотека ли трябва да добавя ?
Търся в различните сайтове, както и в mdn, но не намирам информация за gets() и print().
Сигурен съм, че е нещо дребно, но не успявам да се оправя.
Ще съм безкрайно благодарен, ако някой помогне.

Трябва да си поставиш този snippet който е даден на usage най-отгоре във файла. Ето за пример задачата с 2+2

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

    return () => {
        const toReturn = arr[index];
        index += 1;
        return toReturn;
    };
};
// this is the test
const test = [
  '2',
  '2'
];

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

Реално решението ти е след този коментар //solution. Този snippet може да не го submit в judge, той е направен за да може локално да използваш print и gets. Реално можеш да копираш за judge нещата след коментара. Копирай си този код и си го run локално.

Това решение тук , което сте споделили, с принт и гетс - гърми на половината тестове…

Това не е скрийншот от Tribonacci, though …

Здравей,

Ако става въпрос за кода, който е качил @aaster23, то той е за да можеш да тестваш локално решението на задачите с gets(); +gets(); и print(); Решението на задачата е в първия пост, като сменяш в последния ред console.log(result) с print(result) и трябва да мине 100/100.

Поздрави.

Точно първия пост, от теб, не ми минава тестове , да не би да ползвате биг инт?
Много Благодаря!!!

Сега погледнах последните решения в judge и да, задачата се решава, добавяйки се този “хак” за BigInteger преди решението - https://github.com/kuncavia/JavaScript/blob/master/Cheats/BigIntegerInJS.js
Сега видях и че реално с горния код, отново не се получават нещата на всички тестове, затова съм променил малко кода:

let firstNumber = +gets();
let secondNumber = +gets();
let thirdNumber = +gets();
let n = +gets();

for (let index = 3; index < n; index++) {
    let result = bigInt(firstNumber).add(secondNumber).add(thirdNumber); //! Събиране на BigInteger
    firstNumber = secondNumber;
    secondNumber = thirdNumber;
    thirdNumber = result;
}
print(thirdNumber.toString()); //? Принтираме резултата като String
1 Like

Грешка. Сори

1 Like

Madhouse , Asylum , Craziness :smiley: