169 похожих чатов

Если 2-й элемент больше 1-го другого массива их схлопнуть?

10 ответов

12 просмотров

честно сам до конца не понял сути, но судя из математики за 8 класс, то интервальные числа это когда есть отрезок от точки а до точки б и если точки а или б другого отрезка попадают в промежуток между точкой а и б первого отрезка, то объединить эти отрезки... из данного примера ситуация слеудющая есть массив с числами 1 и 3 и следующий массив 2 и 6, так как 2 больше 1 и меньше 3 эти два массива надо объединить(выходит [1, 6], и судя по всему, если будут массив [5, 9] и [4, 7] то и эти массивы надо объединить превратив два массива в один [4, 9], то есть минимальное значение одного массива и максимальное значение второго массива, получается результат их совмещения. то есть ситуация выходит такая что оба элемента массива надо проверить с соседним элементом массива, на вероятность того что элемент одного массива надо проверить меньше одного и большего другого и на оборот, в случае если все ок, совмещаем, если нет оставляем как есть проверяем следующий

Xardas
честно сам до конца не понял сути, но судя из мате...

let arr = [[1,3], [2,6], [8,10], [15,18]] for(let i = 1; i < arr.length; i++) { let prev = arr[i - 1], cur = arr[i] if(prev[1] >= cur[0]) { arr.splice(--i, 2, [ prev[0], cur[1] ]) } } console.log(arr)

Xardas
честно сам до конца не понял сути, но судя из мате...

или так const arr = [ [1, 3], [2, 6], [8, 10], [15, 18] ]; const result = arr.reduce((acc, v) => { if (acc.length === 0) return [v]; const [start, end] = v; const [prevStart, prevEnd] = acc[acc.length - 1]; if (prevEnd >= start) { acc[acc.length - 1][1] = end; } else { acc.push(v); } return acc; }, []); console.log(result);

Makc- Автор вопроса
Evgenii Popov
или так const arr = [ [1, 3], [2, 6], [8, 10...

не-а там добавили условие еще, я тоже так начал делать

Makc
не-а там добавили условие еще, я тоже так начал де...

Так подойдет? Да в начале не заметил. "use strict"; const arr = [[1, 3], [2, 6], [8, 10], [15, 18]]; const result = arr.reduce((acc, v) => { if (acc.length === 0) return [v]; const [start, end] = v; const [prevStart, prevEnd] = acc[acc.length - 1]; if (prevStart > start) acc[acc.length - 1][0] = start; if (prevEnd >= start) { acc[acc.length - 1][1] = end; } else { acc.push(v); } return acc; }, []); console.log(result);

Makc- Автор вопроса

1. нет 2. кидать код в чистом виде в чат тоже не пойдет

Makc- Автор вопроса
Evgenii Popov
Так подойдет? Да в начале не заметил. "use strict...

все равно на let arr = [[5, 9],[4, 7]] не верно

Makc
let arr = [[5, 2], [8, 4]];

А это валидный массив (тут начало больше конца)?

Makc- Автор вопроса

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта