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

Предположим - есть массив из целых неповторяющихся чисел [2,5,8,10,3,6,19,0]. Как

получить все возможные комбинации из 3-х элементов массива ? Сделал через вложенный arrayMap - получилась очень громоздкая и медленная конструкция. Может быть есть более элегантное решение ? Помогите пожалуйста советом..

15 ответов

18 просмотров

Вам нужно 5 8 10 или ещё 10 8 5 ?

Rodion-Gorbachev Автор вопроса
Константин
Вам нужно 5 8 10 или ещё 10 8 5 ?

В идеале - только 5 8 10. Но если будут дубли - уберу их дистинктом с предварительной сортировкой

Rodion Gorbachev
В идеале - только 5 8 10. Но если будут дубли - уб...

WITH [2,5,8,10,3,6,19,0] as ar SELECT arrayZip(arrayEnumerate(ar),ar) as ar_z, arrayMap(x->arraySlice(ar_z,x.1,3) , ar_z).2 as ar_m, arrayFilter(x->length(x)=3,ar_m) as go

Rodion-Gorbachev Автор вопроса
Константин
WITH [2,5,8,10,3,6,19,0] as ar SELECT arrayZip(ar...

Это простое , но недостаточное решение ) Потому что в нем - только последовательные комбинации. Например - нет комбинации [2, 5, 10]. А нужны все возможные

with pre as (with [2,5,8,10,3,6,19,0] as arr select arrayJoin(arr) as i1, arrayJoin(arrayFilter(x-> x != i1, arr)) as i2, arrayJoin(arrayFilter(x-> x != i2 and x != i1, arr)) as i3) select distinct arraySort(array(i1, i2, i3)) as result from pre

Роман Болдырев
with pre as (with [2,5,8,10,3,6,19,0] as arr ...

кстати т.к. сказано, что числа не повторяются, можно заменить неравенство на строго больше/меньше тогда и distinct с сортировкой не нужен

Tagir Gumerov
кстати т.к. сказано, что числа не повторяются, мож...

не повторяются, но и не упорядочены. Можно отсортировать вначале и тогда соглашусь с вами.

Rodion-Gorbachev Автор вопроса
Роман Болдырев
with pre as (with [2,5,8,10,3,6,19,0] as arr ...

Хм - спасибо - интересное решение. Попробую его на 1 млрд массивов - может проскочит.

Rodion-Gorbachev Автор вопроса
Tagir Gumerov
кстати т.к. сказано, что числа не повторяются, мож...

Спасибо Тагир - получилось. Предварительно отсортировал массив и указал > в фильтрах массива. Задача кластеризации решена малой кровью )

Rodion Gorbachev
Спасибо Тагир - получилось. Предварительно отсорти...

Я могу тупить и под рукой нет ch, но мне кажется, предварительная сортировка не нужна

Rodion-Gorbachev Автор вопроса
Tagir Gumerov
Я могу тупить и под рукой нет ch, но мне кажется, ...

Она нужна для того чтобы убрать дистинкт и сортировку - после выполнения запроса. Вот эту : select distinct arraySort(array(i1, i2, i3))

Rodion-Gorbachev Автор вопроса
Rodion-Gorbachev Автор вопроса
Tagir Gumerov
Я могу тупить и под рукой нет ch, но мне кажется, ...

Конечный вариант : with pre as ( with arraySort([2,5,8,10,3,6,19,0]) as arr select arrayJoin(arr) as i1 , arrayJoin(arrayFilter(x-> x > i1, arr)) as i2 , arrayJoin(arrayFilter(x-> x > i2, arr)) as i3 ) select array(i1, i2, i3) as result from pre

Rodion-Gorbachev Автор вопроса
Роман Болдырев
with pre as (with [2,5,8,10,3,6,19,0] as arr ...

Роман - извините - промазал) Огромное спасибо

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: 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
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
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта