Задача "Четни Числа" - JS

arrays
loops
javascript
tasks

#1

Здравейте,

Имам проблем с решението на Четни Числа в Judge. Локално минавам тестовете, но получавам WA Your output (clipped) - Infinity още при първия case в Judge. Прилагам кода:

const n = gets();
let arr = [];
let numbers = [];
arr = n.split(' ');

function isEven(n) {
    return n % 2 == 0;
}

for (let i = 0; i < arr.length; i++) {
    if (isNaN(arr[i])) {
        continue;
    } else {
        if (isEven(arr[i])) {
            numbers.push(arr[i]);
        } else {
            continue;
        }
    }
}

print(Math.max(...numbers));

Не виждам логика да не минава в Judge, дори сложих кода за BigInteger, ако случайно от там идва проблема, но не…


#2

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


#3

Благодаря, бях пропуснал последното условие и ето, че имаме напредък - 50/100.

const n = gets();
let arr = [];
let numbers = [];
arr = n.split(' ');

function isEven(n) {
    return n % 2 == 0;
}

for (let i = 0; i < arr.length; i++) {
    if (isNaN(arr[i])) {
        continue;
    } else {
        if (isEven(arr[i])) {
            numbers.push(arr[i]);
        } else {
            continue;
        }
    }
}

if (numbers.length > 0 ) {
    print(Math.max(...numbers));
} else {
    print(-1);
}

Ако мога да гадая, проблема най-вероятно идва от това, което каза, че в някои случаи числата не са отделени с интервал. За съжаление идея нямам как да подходя от тук нататък…


#4
0a0a0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b

тест #11
Опитайте с мачване, вместо сплит!


#5

Въобще не се сетих, че при 0 трябва да върне 0… Ако ползвам директно match(); връща 0 на всички кейсове, не само на 11-ти. Ще прегледам в MDN как мога да го завъртя, мисля че се сещам за вариант, че дори може и кода да се поопрости.


#6

/regex/ по дижитс, може да се изпробва


#7

Лично аз проверявам всеки символ дали е между ‘0’ и ‘9’. При последователни цифри си ги събирам и така.