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

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

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

15 ответов

12 просмотров

Вам нужно 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 ...

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

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

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

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Привет, запускаю werf в dind в k8s, получаю ошибку на этапе build/beforeSetup: /.werf/stapel/embedded/bin/bash: /.werf/scripts/5898bdfe5214357d3706b879cc8d3d78460fb379607cbd...
florius0
7
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Добрый день, чат. Мне в очередь из других RabbitMQ по shovel валятся метрики в формате текста для Prometheus. Помогите пожалуйста подружить RabbitMQ и Prometheus, чтобы он (...
Aleksey
4
Карта сайта