Combine Lists - въпрос за изход на задачата

preparation

#1

Здравейте!
Възможно ли е да разбера входа на последния тест на задачата? Проверих всичко в кода си, но не откривам грешка. Изхода от последния 5-ти тест на задачата е 5,7,5,7. Останалите тестове минаха веднага с въвеждането на задачата в ‘джъдж’ системата.
Благодаря!


#2

Здравей,

Няма да можем да предоставим данните от последния тест.

Това което можеш да направиш е да споделиш решението си тук и да се опитаме да видим какво липсва в кода :slight_smile:

Пешо


#3

Благодаря за отговора, Пешо!
Добавям коментари сега. Коментарите не са включени в джъдж системата. Решението ми е
let arrayA = gets().split(’,’); // приемам входа, премахвам запетайките и го вкарвам в масив
let arrayB = gets().split(’,’); // приемам входа, премахвам запетайките и го вкарвам в масив
for (let i=0; i<arrayA.length; i++) { // превръщам елементите в тип ‘чило’
arrayA[i] = +arrayA[i];
}
for (let i=0; i<arrayB.length; i++) { // превръщам елементите в тип ‘чило’
arrayB[i] = +arrayB[i];
}
let toPrint = arrayA[0] + ‘,’ + arrayB[0] + ‘,’
if (arrayA.length>arrayB.length) { // ако масив А е по-дълъг от Б
for (let i=1; i<arrayA.length-1; i++) {
toPrint += arrayA[i] + ‘,’ + arrayB[i] + ‘,’;
}
print(toPrint + arrayA[arrayA.length-1] );
} else if (arrayA.length === arrayB.length) { // ако масив А е равен на Б
for (let i=1; i<arrayA.length-1 && arrayB.length-1; i++) {
toPrint += arrayA[i] + ‘,’ + arrayB[i] + ‘,’;
}
print(toPrint + arrayA[arrayA.length-1] + ‘,’ + arrayB[arrayB.length-1]);
} else if (arrayA.length<arrayB.length){ // ако масив А е по-малък на Б
for (let i=1; i<arrayB.length-1; i++) {
toPrint += arrayA[i] + ‘,’ + arrayB[i] + ‘,’;
}
print(toPrint + arrayB[arrayB.length-1]);
}


#4

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



Успех!


#5

Благодаря за отговора skurtov!
Просто така се е случило да поставя кода. Първоначално пробвах като ‘стринг’ после пробвах с число. Няма никаква разлика. Последния тест винаги е грешен. Мисля, че програмната логика е правилна и няма някаква грешка или мисконцепция.
За метода ‘пуш’ и ‘джойн’ знам. Ползвам ги. В това решение просто съм подходил по този начин. Интересно ми е какво и къде греши. Пробвах с разлчини входове. Нули, отрицателни числа и/или цифри. Отговора излиза така както трябва да бъде изхода.


#6

Ето виж как съм модифицирал твоята задача.

let arrayA = gets().split(','); // приемам входа, премахвам запетайките и го вкарвам в масив
let arrayB = gets().split(',');  // приемам входа, премахвам запетайките и го вкарвам в масив
let combine = new Array();
let index = 0;
let maxLength = Math.max(arrayA.length, arrayB.length);
while (index < maxLength){
    if (arrayA[index] !== undefined && arrayB[index] !== undefined){
        combine.push(arrayA[index]);
        combine.push(arrayB[index]);
        index += 1;
    }
    else if (arrayA[index] === undefined && arrayB[index] !== undefined){
        combine.push(arrayB[index]);
        index += 1;
    }
    else if (arrayA[index] !== undefined && arrayB[index] === undefined){
        combine.push(arrayA[index]);
        index += 1;
    }
}
print(combine.join(','));

#7

Благодаря за вложения труд!
Именно и аз за това мислех, но не разбирам, защо не работи с цикъла. Но както и да е де.
Задачата е решена и отново благодаря за помощта!


#8

you can assume that the input lists will have the same length


#9

Thanks for the reply! Then the task becomes easier.
The task is solved, but i don’t really know why the original code with the ‘for’ cycle didn’t worked out.


#10

Не разбирам нещо … arrayA[i] = +arrayA[i]; какво трябва да прави ?
Питам , тъй като моето решение е на Java и искам да си обясня какво правиш.


#11

С това казвам - Направи всеки елемент от масива от тип ‘стринг’ в тип ‘число’.
Идентично на това ще бъде -
for (let i=0; i<arrayA.length; i++) {
arrayA[i] = Number(arrayA[i]); // превръщам елемента в тип ‘число’.
}
В конкретния случай, когато качвах кода не видях тази част от него. Тя не играе роля в решението на задачата. Но има случаи в, които като сравнява компилатора ще изплюе грешна логика.
Пример:
console.log(‘3’>‘12’) // връща true.
Предполагам, че го знаеш това, но все пак го казвам.