@taipan90

Почему не проходит тест на codeWars?

Нужно найти максимальную разницу между длинами элементов двух массивов. Почему то первое решение проходит тест, а второе решение - нет, хотя оба решения делают одно и тоже вроде как. Подскажите в чем проблема?

Первое решение:

function mxdiflg(a1, a2) {
  if (a1.length === 0 || a2.length === 0) return -1
  let l1 = a1.map(str => str.length)
  let l2 = a2.map(str => str.length)
  return Math.max(Math.max(...l1) - Math.min(...l2), Math.max(...l2) - Math.min(...l1))
}

mxdiflg( ["hoqq", "bbllkw", "oox", "ejjuyyy", "plmiis", "xxxzgpsssa", "xxwwkktt", "znnnnfqknaz", "qqquuhii", "dvvvwz"], ["cccooommaaqqoxii", "gggqaffhhh", "tttoowwwmmww"])


Второе решение:

function mxdiflg(a1, a2) {
    if (a1.length === 0 || a2.length === 0) return -1;
    let strToNumb = a1.concat(a2).map(item => item.length).sort((a,b) => a-b);
    return Math.max(...strToNumb) - Math.min(...strToNumb)
}

mxdiflg( ["hoqq", "bbllkw", "oox", "ejjuyyy", "plmiis", "xxxzgpsssa", "xxwwkktt", "znnnnfqknaz", "qqquuhii", "dvvvwz"], ["cccooommaaqqoxii", "gggqaffhhh", "tttoowwwmmww"])
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
webdisigner
@webdisigner
Ты берешь из a1 либо максимальное число либо минимальное число
Ты берешь из a2 либо максимальное число либо минимальное число

Второе решение не проходит потому что ты 2 массива скрещиваешь и не понятно теперь взял ли ты из каждого массива по 1 значению или взял 2 значения из 1 массива

допустим у тебя в первом массиве [1,10,3,5,7] максимальное значение 10 и минимальное 1
во втором массиве [7,8,3,5,2] максимальное значение 8 а минимальное 2

дальше ты их склеиваешь и сортируешь [1,10,3,5,7].concat([7,8,3,5,2]).sort((a,b)=>a-b)
и в ответе пишешь Math.max(...strToNumb) - Math.min(...strToNumb)
ты получаешь значения 10 - 1 (2 значение взяты из первого массива)
а должен был получить по 1 значению с каждого массива а не с одного

а ответом должно быть 10 - 2 = 8

Я эту задачу решал и знаю о чем говорю
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
WblCHA
@WblCHA
И каким хотя бы теоретическим образом они делают одно и тоже? Поскольку кодеварс ты используешь явно для развития, то разбирайся.
Вот входные массивы, с которыми выходят абсолютно разные ответы:
['123456789', '1'], ['1234', '12345']

П.с.: ты серьёзно в отсортированном массиве не знаешь где минимум и максимум?
let strToNumb = a1.concat(a2).map(item => item.length).sort((a,b) => a-b);
return Math.max(...strToNumb) - Math.min(...strToNumb)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы