Здравейте!
Възможно ли е да разбера входа на последния тест на задачата? Проверих всичко в кода си, но не откривам грешка. Изхода от последния 5-ти тест на задачата е 5,7,5,7. Останалите тестове минаха веднага с въвеждането на задачата в ‘джъдж’ системата.
Благодаря!
Здравей,
Няма да можем да предоставим данните от последния тест.
Това което можеш да направиш е да споделиш решението си тук и да се опитаме да видим какво липсва в кода
Пешо
Благодаря за отговора, Пешо!
Добавям коментари сега. Коментарите не са включени в джъдж системата. Решението ми е
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]);
}
Здравей Сашо.
Не успях да разбера, защо не ти минава петия тест.
Но когато аз решавах задачата, не превръщах стринговете в числа.
Виж join метода, а също и push.
Успех!
Благодаря за отговора skurtov!
Просто така се е случило да поставя кода. Първоначално пробвах като ‘стринг’ после пробвах с число. Няма никаква разлика. Последния тест винаги е грешен. Мисля, че програмната логика е правилна и няма някаква грешка или мисконцепция.
За метода ‘пуш’ и ‘джойн’ знам. Ползвам ги. В това решение просто съм подходил по този начин. Интересно ми е какво и къде греши. Пробвах с разлчини входове. Нули, отрицателни числа и/или цифри. Отговора излиза така както трябва да бъде изхода.
Ето виж как съм модифицирал твоята задача.
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(','));
Благодаря за вложения труд!
Именно и аз за това мислех, но не разбирам, защо не работи с цикъла. Но както и да е де.
Задачата е решена и отново благодаря за помощта!
you can assume that the input lists will have the same length
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.
Не разбирам нещо … arrayA[i] = +arrayA[i]; какво трябва да прави ?
Питам , тъй като моето решение е на Java и искам да си обясня какво правиш.
С това казвам - Направи всеки елемент от масива от тип ‘стринг’ в тип ‘число’.
Идентично на това ще бъде -
for (let i=0; i<arrayA.length; i++) {
arrayA[i] = Number(arrayA[i]); // превръщам елемента в тип ‘число’.
}
В конкретния случай, когато качвах кода не видях тази част от него. Тя не играе роля в решението на задачата. Но има случаи в, които като сравнява компилатора ще изплюе грешна логика.
Пример:
console.log(‘3’>‘12’) // връща true.
Предполагам, че го знаеш това, но все пак го казвам.
Здравейте,
Можете ли да ми кажете защо този код, при локално тестване работи, а в judge ми дава грешни отговори?
let list1 = gets().split(’, ‘);
let list2 = gets().split(’, ');
let combined = [];
for (let i=0; i < list1.length; i++) {
combined.push(list1[i], list2[i])
};
print(combined.join());
Благодаря!
Здравей колега,
При принтирането на комбинирания лист, числата трябва да бъдат разделени с запетая.
Поздрави,
Мишо
Здравей Мишо.
Явно и това не е проблема. По някаква причина, в judge, въобще не ми подрежда числата както трябва да са. Но когато го тествам локално всичко работи идеално.
Някакви други идеи?
Благодаря!
Здрвей Евгени,
опитай да сплитнеш не по ", "
(запетая и празно място), а по ","
(само запетая).
Успех