Вопросы с тегами [combinations]

1

голосов
1

ответ
50

Просмотры

Получить все возможные комбинации строки генерируются из символов ASCII между двумя числами

Мне нужна простой яваскрипт функция, которая принимает 3 вход 1- начального значения ASCII-2- конечного значения ASCII, длина 3- Строки Функции будет цикл от начального значения, чтобы конечное значения до тех пор, пока длина была сделана. Так, например, начало - 65 - конец 67 длина- 2 Хочу все комбинации (длина 2) ASCII из [65, 66, 67], что [ «А», «В», «С»] Я хотел бы, выход как AA AB AC BB BA BC CA CB CC
murtuza hussain
1

голосов
3

ответ
51

Просмотры

Как группировать наблюдения, которые представляют собой комбинации друг с другом в SAS

Примером может служить набор данных: данные имеют; входные наблюдения $; ; линиям передачи данных 'ABC' 'BCA' 'кабины' 'де' 'изд' 'аb' 'ABCD' 'BADC' 'ABCE'; бежать; Я не уверен, как получить все замечания, которые являются комбинации друг с другом, чтобы быть преобразованы в какой-то combo_id. Пример желаемому данные: «а» combo_1 «BCA» combo_1 «такси» combo_1 «де» combo_2 «изд» combo_2 «AB» combo_3 «ABCD» combo_4 «BADC» combo_4 «ABCE» combo_5 в этот момент я был бы в состоянии группа по combo_id в SQL ...
R. Story
1

голосов
1

ответ
60

Просмотры

Получить различные комбинации из наборов

У меня есть различные наборы, идентифицированных некоторые имена, против которых существует значение. Я использую построить как словарь для хранения таких объектов. Как мой выход мне нужно все возможные комбинации значений, которые могут быть сгенерированы из этого входного синтаксиса. В моих попытках, я разработал подход, основанный на указательный такой, что если индексы правильно манипулировать, я бы получить необходимые выходные формы, аналогичного пример. Я понимаю, что он мог бы использовать рекурсию, но я не уверен, как идти об этом. Является ли это общепризнанная проблемой? Вы можете найти код ниже: с помощью системы; используя System.Collections.Generic; Пространство имен Rextester {общественного класса Program {частный статический словарь dataAtIndex (словарь iArgs, словарь iArgIndex) {словарь oConditionKeys = новый словарь (); Еогеасп (вар vArgName в iArgs. Клавиши) {INT индекс = iArgIndex [vArgName]; Строка argValue = iArgs [vArgName] [индекс]; oConditionKeys.Add (vArgName, argValue); } Вернуть oConditionKeys; } Частных статических аннулируются testFunc (Словарь iArgs, реф Список oListSelectKeys) {словарь argIndex = новый словарь (); Еогеасп (вар vArgName в iArgs.Keys) {argIndex.Add (vArgName, 0); } oListSelectKeys.Add (dataAtIndex (iArgs, argIndex)); } государственной статической силы Main (string []) {mainargs словарь Args = новый словарь (); Список listArgData1 = новый список (); listArgData1.Add ( "1 => arg0"); listArgData1.Add ( "1 => Arg1"); listArgData1.Add ( "1 => Arg2"); Список listArgData2 = новый список (); listArgData2.Add ( "2 => arg0"); listArgData2.Add ( "2 => Arg1"); Список listArgData3 = новый список (); listArgData3.Add ( "3 => arg0"); listArgData3.Add ( "3 => Arg1"); listArgData3.Add ( "3 => Arg2"); listArgData3.Add ( "3 => Arg3"); args.Add ( "Param1", listArgData1); args.Add ( "Param2", listArgData2); args.Add ( "Param3", listArgData3); Console.WriteLine ( "Ввод данных:"); Еогеасп (вар vKey в args.Keys) {Console.Write (vKey + ":"); Еогеасп (вар VDATA в арг [vKey]) {Console.Write (Vdata + ",«); } Console.WriteLine (); } Console.WriteLine (); Список listSelectKeys = новый список (); testFunc (арг, реф listSelectKeys); Количество INT = 0; Console.WriteLine ( "Выходные данные:"); Еогеасп (вар Velem в listSelectKeys) {Console.Write (кол ++ + ":"); Еогеасп (вар vKey в vElem.Keys) {Console.Write ( "(" + vKey + "" + Velem [vKey] + ")"); } Console.WriteLine (); }}}} Вывод должен быть, как: 0: (Param1, 1 => arg0) (param2, 2 => arg0) (param3, 3 => arg0) 1: (Param1, 1 =>
user2338150
1

голосов
2

ответ
209

Просмотры

Redshift создать все комбинации любой длины для значений в одном столбце

Как мы можем создать все комбинации любой длины для значений в одном столбце и вернуть отчетливый отсчет другого столбца для этой комбинации? Таблица: + ------ + -------- + | Тип | Имя | + ------ + -------- + | | Том | | | Бен | | B | Бен | | B | Джастин | | C | Бен | + ------ + -------- + Таблица вывода: + ------------- + ------- + | Комбинация | Количество | + ------------- + ------- + | | 2 | | B | 2 | | C | 1 | | AB | 3 | | BC | 2 | | AC | 2 | | ABC | 3 | + ------------- + ------- + Если комбинация является только, есть Том и Бен так что 2. Если комбинация только B, 2 отдельные имена так это 2. Когда комбинация а и в, 3 отдельных названий: Том, Бен, Джастин так это 3. Я работаю в Amazon Redshift.
bliu
1

голосов
1

ответ
27

Просмотры

Сделайте собственные комбинации клавиш для облегчения naviagation в коде

В последнее время я думал, что это было бы хорошо, если бы был способ использовать кнопки, как влево, вправо, вниз, вверх, POS1 или END без перемещения руки прочь от главной же раскладки области. Например, я хотел бы нажать LCtrl + SPACE + A вместо ВЛЕВО. Существует способ определить такую ​​комбинацию ключа в моем IDE (PyCharm). Это работает, но я должен освободить все три ключа, прежде чем я могу пойти налево снова, что, очевидно, не очень полезно, потому что иногда вы должны нажмите кнопку влево несколько раз. Поэтому я хотел бы иметь, что до тех пор, как я нажать и удерживать LCtrl + SPACE и любой из WASD работать UPLEFTDOWNRIGHT respectivly.
caluthan
1

голосов
1

ответ
109

Просмотры

C# Choosing from a list of limited combinations

I have seen many answered questions about this kind of topics, but I need to know what is the best way to limit the number of possible combinations given a list of values (1,5,10,20) and a limit number (100). My question is, how can I do to avoid results like (100*1 or 20*5) and select only results with a limit of 10 units (4*20+4*5) or (3*20+7*5) or (9*10+1*5). Unwanted combinations: (20*5), (100*1), (15*5+25*1), (40*1+12*5), etc Desired combinations (equal or less than 100): (3*20+7*5), (8*10+1*20), (4*20+1*10+2*5), etc What i want is all possible combinations under or equal 100 and, (supposing to be coins), combinations with no more than 10 coins. This piece of code solves the problem of limiting results, but shows only one result: class Program { static int amount = 1000; static void Main(string[] args) { Coin[] c = new Coin[] { new Coin(500, 3), new Coin(200, 3), new Coin(100, 3) , new Coin(50, 3), new Coin(20, 3), new Coin(10, 3), new Coin(5, 3), new Coin(2, 3), new Coin(1, 3)}; int netAmount = amount; for (int i = 0; i < c.Length; i++) { amount -= c[i].coveredPrice(amount); } for (int i = 0; i < c.Length; i++) { Console.WriteLine(c[i].ToString()); } Console.ReadLine(); } } class Coin { private int price; private int counted; private int maxNo; public Coin(int coinPrice, int coinMaxNo) { this.price = coinPrice; this.maxNo = coinMaxNo; this.counted = 0; } public int coveredPrice(int Price) { int Num = Price / price; if (maxNo == 0) return 0; if (maxNo != -1) if (Num > this.maxNo - this.counted) Num = maxNo; this.counted += Num; return Num * price; } public override string ToString() { return string.Format("{0} x {1} (max {2}) ", this.price.ToString(), this.counted.ToString(), this.maxNo.ToString()); } } } What should i have to modify to show me all the results?
Fernando
1

голосов
4

ответ
94

Просмотры

Найти все возможные комбинации, которые делают конкретный номер JavaScript

Моя проблема в том, у меня есть номер для примера 17; У меня также есть три других постоянные числа: 2, 5, 7; Мне нужно найти все возможные комбинации, которые делают конкретный номер 17 или любой другой номер; 5 + 5 + 7 = 17 (1 комбинация) 5 + 5 + 5 + 2 = 17 (2 комбинации) 2 + 2 + 2 + 2 + 2 + 7 = 17 (3 комбинаций) 2 + 2 + 2 + 2 + 2 + 2 + 5 = 17 (4 комбинации) Так что ответ 4. Я создал скрипт, который правильно работает с номером 17, но не так с большими числами, как 20 или 30. Как сделать его работать со всеми числами? Const искать = 30; Const FirstNum = 2; Const SecondNum = 5; Const thirdNum = 7; Пусть комбинации = 0; Const maxDivisor = Math.round (искать / 2); для (пусть г = 1; я
Simba
1

голосов
1

ответ
67

Просмотры

Scala: Создание всех возможных перестановок на основе предложение синонимов каждого слова

У меня есть предложение (строка) и функция, которая генерирует все синонимы данного слова из WordNet. Я хотел бы получить список всех возможных вариаций моих предложений на основании его синонимов. Кроме того, я хотел бы сохранить порядок первоначального предложения, то есть перестановки должны содержать только синонимы первого слова в качестве первого слова, и перестановки второго слова в качестве второго слова и т.д. Например, если мой вход: «5 сантиметров» Мой выход должны быть вдоль линий: 5 см 5 сантиметров 5 сантиметров 5 сантиметров пяти см пяти сантиметров пяти сантиметров пяти сантиметров, что это лучший способ, чтобы продолжить это в Scala? Спасибо!
Michael
1

голосов
2

ответ
71

Просмотры

R: Матрица Комбинация с определенным количеством значений

Я хочу, чтобы все комбинации моей матрицы. Ex. двоичный 5 х 5 матрица, где у меня только две 1 строки (смотри ниже) COM 1: 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 Com 2: 1 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0. , , Com: 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 Я попытался с помощью комбинирования пакета в R, но не смог найти решение.
JHKI
1

голосов
2

ответ
43

Просмотры

R: Найти все комбинации без замены разреженной матрицы

Я хочу, чтобы найти все возможные комбинации (без замены) большой разреженной матрицы. Каждая комбинация может выбрать максимум один раз из каждой строки и столбца. Моя цель состоит в том, чтобы найти комбинацию, которая максимизирует сумму выбранных записей. Скажем, у меня есть следующая матрица: 6 8. , , 5 7. , 6. 9 Существуют 4 возможные комбинации (в терминах I и J): [(1,1), (2,2), (3,4)], [(1,1), (2,3), (3 , 2)], [(1,2), (2,3), (3,2)], [(1,2), (2,3), (3,4)] Мой результат должен быть суммой записей для каждой возможной комбинации, где моя конечная цель состоит в том, чтобы найти комбинацию, которая максимизирует этот результат ([(1,2), (2,3), (3,4)] = 8 + 7 + 9 = 24 в этом пример). Изменить: вот полный код, который генерирует разреженную матрицу из которых я хочу найти оптимальное сочетание: библиотека (data.table) библиотека (ggplot2) библиотека (приют) библиотека (Matrix) библиотека (EVD) set.seed (12345) N1
Muly
1

голосов
2

ответ
1.1k

Просмотры

РНР алгоритм, который вычисляет все возможные комбинации разделения одного набора между другим набором

Я ищу своего рода 2-мерного алгоритма комбинации .. если это правильная формулировка. Я очень опытный с PHP, но не с алгоритмами и передовой математикой, так терпите меня, пожалуйста. У меня есть набор элементов, которые я хочу объединить с другим набором элементов и рассчитать все возможные комбинации, так что я могу анализировать ее впоследствии. Количество элементов в наборах никогда не меняется, оба набора всегда есть пять элементов: $ SET1 = массив ( «A», «B», «C», «D», «Е»); $ Set2 = массив ( 'One', 'Два', 'Три', 'Четыре', 'Пять'); Не знаю, если это правильное выражение, но я хотел бы видеть все комбинации Set 1 элементов, разделенных между пунктами Сета 2. Три»=> Array ( 'А'), 'Четыре' => Array ( 'В'), 'Пять' => массив ( 'D', 'E'),), 3 => массив ( '= One' > массив (), 'Два' => Array (), 'Три' => Array ( 'А', 'В', 'С', 'D', 'E'), 'Четыре' => Array () 'Пять' => Array (),),); Etc .. те рода ценности. Любой вид обратной связи на этом можно только приветствовать, в частности: Как закодировать что-то вроде этого в PHP? Через рекурсивной функции? Должен ли я использовать декартову алгоритм продукта? Сколько комбинаций возможны? 5 ^ 10? В зависимости от предыдущей точки: Реально ли работать с этими данными в режиме реального времени в веб-приложение? Если у меня есть 10 миллионов комбинаций, чем я предполагаю, что я, вероятно, нужно сделать расчеты заранее, сохранить результаты анализа и работы с этим во время выполнения приложения живого? Есть некоторые ограничения (например: Set «One» 2 шт, «два» и «Три» всегда должны иметь по крайней мере один элемент из набора 1), но бесполезных комбинаций будет отброшен в процессе анализа впоследствии поэтому нет необходимости включать, что в комбинация алгоритм, если он не может уменьшить время вычислений, построив их в в этой точке? Мой вопрос может быть не очень ясно, так что просто спросить, если мне нужно, чтобы обеспечить некоторую более или более полную информацию. Заранее спасибо Обновление 28.02.2012 Я попытался PHP реализаций питания Set & декартовых функций продукта, которые я нашел в Интернете (Такого рода вещи немного за меня, чтобы попытаться закодировать себя). Поэтому, когда я выполняю этот код: $ Powerset = POWERSET (массив ( 'A', 'B', 'C')); $ Декартова = декартово (массив ( 'Set1' => $ Powerset, 'Set2' => Array ( 'One', 'Два', 'Три'))); Это то, что функция POWERSET ставит в $ Powerset: Array ([0] => Array () [1] => Array ([0] => A) [2] => Array ([0] => В) [ 3] => Array ([0] => B [1] => A) ... И это то, что декартовы функция возвращает: Array ([0] => Array ([Set1] => Array () [Set2 ] => Один) [1] => Array ([Set1] => Array ([0] => А) [Set2] => Один) [2] => Array ([Set1] => Array ([0] => В) [Set2] => Один) [3] => Array ([Set1] => Array ([0] => B [1] => A) [Set2] => One) ... Так что это своего рода делает то, что я хотел, но не самая трудная часть. Рассматривается комбинации «индивидуальны» и не распространяет Set1 в Set2, убедившись, что все Set1 элементов используются на все три SEt2 пунктов. Могу ли я искажая использование этих двух функций? Я полагаю, что это то, что я не правильно понять о том, как объединить силы Set & декартов продукт для достижения моего результата. Должен ли я, возможно, вызвать функцию POWERSET () внутри функции декартовой ()? Может быть, эти конкретные функции PHP не совсем служат своей цели? Я нашел их здесь: комплект Мощность: http://bohuco.net/blog/2008/11/php-arrays-power-set-and-all-permutations/ декартово произведение: Поиск декартово произведение с PHP ассоциативные массивы Еще одно обновление: Подтвердив проблему без ссылки программирования Эта проблема связана с инструментом анализа я создаю для стратегической игры. Каждый раз, когда инструмент привыкает, игроки могут выбрать 5 различных единиц из большой коллекции единиц. Эти устройства могут быть объединены с другим (статическим) сущностеем (давайте называть их «пулы») в различных формах. Блоки имеют характеристики, которые могут или не могут улучшить стратегию игрока, если они сочетаются с некоторыми бассейнами. Например: Единица A любит быть в бассейне 1, но ненавидит быть в бассейне-Unit B ненавидящим быть в бассейне 1, если если блок А не существует, а также и т.д .. Целью инструмента является, чтобы найти лучшие комбинации из которых единицы идут в котором бассейн. Таковы правила: Есть всегда 5 различных единиц, выбранных из коллекции около 50. Всех этих единиц имеют разные характеристики. Есть всегда одни и те же 5 бассейнов. Они имеют различные характеристики, но лужи не выбраны из большого собрания, они всегда одинаковы. Каждый пул может содержать несколько единиц, от 0 до 5. Каждое устройство может находиться только в одном бассейне. Вход: Список 5 переменных блоков: А, В, С, D, список ЕА 5 статических бассейнов: pool1, Pool2, Pool3, Pool4, Pool5 выход должен быть, все возможные комбинации между этими двумя списками, на основе вышеупомянутые правила. Некоторые примеры: Комбинация 1 Бассейн 1: Пул 2: В бассейн 3: С бассейн 4: D бассейн 5: E Комбинация 2 Бассейн 1: А, В, С бассейн 2: D бассейн 3: Е бассейн 4: Пул 5: Комбинация 3 бассейн 1: С 2 бассейн: бассейн 3: бассейн 4: В бассейн 5: D, Е Комбинация 4 бассейн 1: 2 бассейн: бассейн 3: A, B, C, D, E бассейн 4: бассейн 5: и т.д ... Так что я хотел бы сделать: принять все возможные комбинации единиц и бассейнов существуют. Пройдите через них и назначить комбинации с «значение стратегии» на основе взаимодействия между подразделениями и бассейнами. Возьмите 10 лучших комбинаций, которые имеют наивысший «значение стратегии» Шаг 2 и 3 не являются проблемой. Проблема у меня генерирует все возможные комбинации блоков в бассейнах. Надеюсь, что это более четкое описание проблемы Шаг 2 и 3 не являются проблемой. Проблема у меня генерирует все возможные комбинации блоков в бассейнах. Надеюсь, что это более четкое описание проблемы Шаг 2 и 3 не являются проблемой. Проблема у меня генерирует все возможные комбинации блоков в бассейнах. Надеюсь, что это более четкое описание проблемы
Kiluminati
1

голосов
2

ответ
546

Просмотры

Алгоритм поиска возможных комбинаций в Matlab с одним ограничением?

Очень простой пример: A = [100 250 300] Как найти все возможные комбинации, пока каждая комбинация имеет сумму менее 500?
NLed
1

голосов
2

ответ
483

Просмотры

Specific combination algorithm

Если у меня есть п шаров и к емкости, то это -> (!! (П + к-1) / п (к-1)) будет работать, сколько комбинаций есть. У меня возникают трудности при изменении этого, чтобы получить список всех комбинаций в JavaScript. В функции принимает массив шаров и некоторое количество контейнеров. Комбинации ([1,2,3,4,5,6], 3) Каждый контейнер может иметь любое количество шаров и контейнеры могут быть пустыми. Вот что-то я пытался, но им только получать один мяч в каждом контейнере. Функция generateCombinations (массив, г, обратный вызов) {функция, равная (а, б) {для (вар я = 0; г <a.length; я ++) {если (а [I] = Ь [I]!) возвращают ложь; } Возвращает истину; } Значения функции (я, а) {вар RET = []; для (вар J = 0; J <i.length; j ++) ret.push (а [я [J]]); вернуться в отставке; } Вар п = array.length; Индексы вар = []; для (вар я = 0; я <г; я ++) indices.push (I); Окончательный вар = []; для (вар я = п - г; <п; я ++) final.push (I); в то время как (равные (индексы, окончательный)) {обратного вызова (значения (индексы, массив)); вар я = г - 1; в то время как (индексы [I] == п - г + I) I - = 1; Индексы [I] + = 1; для (вар J = I + 1, J <г; J ++) Индексы [J] = индексы [I] + J - я; } Обратного вызова (значение (индексы, массив)); } Count = 0 generateCombinations ([1,2,3,4,5,6,7,8,9,1], 3, функция (первая) {$ ( "# привет"). Добавить (первый + "") подсчет = кол +1}) $ ( "# Hello"). добавить (количество) в то время как (индексы [I] == п - г + I) I - = 1; Индексы [I] + = 1; для (вар J = I + 1, J <г; J ++) Индексы [J] = индексы [I] + J - я; } Обратного вызова (значение (индексы, массив)); } Count = 0 generateCombinations ([1,2,3,4,5,6,7,8,9,1], 3, функция (первая) {$ ( "# привет"). Добавить (первый + "") подсчет = кол +1}) $ ( "# Hello"). добавить (количество) в то время как (индексы [I] == п - г + I) I - = 1; Индексы [I] + = 1; для (вар J = I + 1, J <г; J ++) Индексы [J] = индексы [I] + J - я; } Обратного вызова (значение (индексы, массив)); } Count = 0 generateCombinations ([1,2,3,4,5,6,7,8,9,1], 3, функция (первая) {$ ( "# привет"). Добавить (первый + "") подсчет = кол +1}) $ ( "# Hello"). добавить (количество)
Matt Saddington
1

голосов
1

ответ
1.1k

Просмотры

Генерирование всех комбинаций вектора строк

Я пытаюсь решить проблемы некоторого UVA, и я хочу, чтобы генерировать все возможные комбинации массива струны. Например: Строка ул [] = { "ABCD", "EFG", "Hij"}; Таким образом, программа должна напечатать:> ABCD EFG Hij> ABCD Hij EFG> HIJ ABCD EFG> HIJ EFG ABCD> EFG ABCD HIJ> EFG HIJ абвг
Sql Nin Ja
1

голосов
3

ответ
1.4k

Просмотры

Как найти кратчайшую стоимость пути?

У меня есть два массива String [] город = { "A", "B", "C", "D"} И стоимость подключения их сказать ИНТ [] стоимость = {2,1,3,2,4,3 } задача состоит в том, чтобы найти кратчайшую стоимость пути, который будет 6 здесь. Зачем? А-> В = 2 А-> С = 1 A-> D = 3 --------- = 6 (дешевый) B-> C = 2 B-> D = 4 В-> А = 2 -------- = 8 C-> D = 3 С-> А = 1 С-> В = 2 ------------ = 6 (дешевый) D-> A = 3 D-> B = 4 D-> С = 3 ------------- = 10 и так on..total 16 (2 ^ 4) появится такое сочетание. Я refereing некоторые вопросы в SO + другие, но не в состоянии понять. Как это сделать, не принимая помощи какой-либо третьей библиотеки partry? И, пожалуйста, обеспечивают легкий способ сделать это !! Моя попытка (не очень правильно) публичный статический INT minimum_cost (строка [] input1, ИНТ [] input2) {INT I = 0; Int J = 0; INT = 0; INT Счетчик = 0; INT Len = input2.Length; хранение вар = новый INT [input1.Length * input2.Length]; для (я = 0; я <длина - 2; я ++) {для (J = I + 1, J <длина - 1; j ++) {для (к = J + 1; к <Len; K ++) {вар m1 = вход2 [I]; вар м2 = вход2 [J]; вар м3 = вход2 [к]; storage.SetValue (m1 + m2 + m3, счетчик); Счетчик ++; }}} Вернуть storage.Take (счетчик) .min (); } Вызов вар вход1 = новая строка [] { "А", "В", "С", "D"}; вар вход2 = новый INT [] {2, 3, 1, 2, 4, 3}; вар Рез = minimum_cost (INPUT1, вход2); Заранее спасибо. для (я = 0; я <длина - 2; я ++) {для (J = I + 1, J <длина - 1; j ++) {для (к = J + 1; к <Len; K ++) {вар m1 = вход2 [I]; вар м2 = вход2 [J]; вар м3 = вход2 [к]; storage.SetValue (m1 + m2 + m3, счетчик); Счетчик ++; }}} Вернуть storage.Take (счетчик) .min (); } Вызов вар вход1 = новая строка [] { "А", "В", "С", "D"}; вар вход2 = новый INT [] {2, 3, 1, 2, 4, 3}; вар Рез = minimum_cost (INPUT1, вход2); Заранее спасибо. для (я = 0; я <длина - 2; я ++) {для (J = I + 1, J <длина - 1; j ++) {для (к = J + 1; к <Len; K ++) {вар m1 = вход2 [I]; вар м2 = вход2 [J]; вар м3 = вход2 [к]; storage.SetValue (m1 + m2 + m3, счетчик); Счетчик ++; }}} Вернуть storage.Take (счетчик) .min (); } Вызов вар вход1 = новая строка [] { "А", "В", "С", "D"}; вар вход2 = новый INT [] {2, 3, 1, 2, 4, 3}; вар Рез = minimum_cost (INPUT1, вход2); Заранее спасибо. K ++) {вар m1 = вход2 [I]; вар м2 = вход2 [J]; вар м3 = вход2 [к]; storage.SetValue (m1 + m2 + m3, счетчик); Счетчик ++; }}} Вернуть storage.Take (счетчик) .min (); } Вызов вар вход1 = новая строка [] { "А", "В", "С", "D"}; вар вход2 = новый INT [] {2, 3, 1, 2, 4, 3}; вар Рез = minimum_cost (INPUT1, вход2); Заранее спасибо. K ++) {вар m1 = вход2 [I]; вар м2 = вход2 [J]; вар м3 = вход2 [к]; storage.SetValue (m1 + m2 + m3, счетчик); Счетчик ++; }}} Вернуть storage.Take (счетчик) .min (); } Вызов вар вход1 = новая строка [] { "А", "В", "С", "D"}; вар вход2 = новый INT [] {2, 3, 1, 2, 4, 3}; вар Рез = minimum_cost (INPUT1, вход2); Заранее спасибо. } Вызов вар вход1 = новая строка [] { "А", "В", "С", "D"}; вар вход2 = новый INT [] {2, 3, 1, 2, 4, 3}; вар Рез = minimum_cost (INPUT1, вход2); Заранее спасибо. } Вызов вар вход1 = новая строка [] { "А", "В", "С", "D"}; вар вход2 = новый INT [] {2, 3, 1, 2, 4, 3}; вар Рез = minimum_cost (INPUT1, вход2); Заранее спасибо.
1

голосов
1

ответ
360

Просмотры

Перестановка двоичных переменных и их значение таблицы

У меня есть некоторые некоторые логические переменные и хочу изменить таблицу значений в том же «порядке» в качестве переменных. например: 2 ^ 2 = 4 сочетаний 0,0 = А = В 0,1 1,0 1,1 = С = D Теперь поменять x_1 с x_2 и в итоге 0,0 = А = 0,1 С 1 , 0 = B 1,1 = D Я ищу функцию, возвращающую таблица значения «сортируется». учитывая перестановку порядок значений. Один из способов будет слишком перебираем все возможные комбинации битов и перевести их в переставленной состоянии. Но как я могу сделать это в C ++? например, если у меня есть порядок (3,2,1), а затем x_1, x_2_x_3 = 0,1,1 будет переставлять с 1,1,0 так sorted_table [рода (0,1,1)] = sorted_table [6] = old_table [3] Любые идеи, как сделать это очень быстро? Я предполагаю, что я мог бы манипулировать некоторый двоичный вектор, но кажется, что медленно?
Johan
1

голосов
1

ответ
119

Просмотры

Оптимальный способ найти общие элементы между парами комбинаций

У меня есть список заказанных товаров типа А, которые каждый из которых содержит подмножество из списка элементов B. Для каждой пары элементов в А, я хотел бы, чтобы найти число элементов B, которые они разделяют (пересекаются). Например, если у меня есть эти данные: A1: B1 A2: B1 B2 B3 A3: B1 Тогда я хотел бы получить следующий результат: A1, A2: 1 A1, A3: 1 A2, A3: 1 Проблема у меня есть что делает алгоритм эффективной. Размер моего набора данных о 8.4K элементов типа А. Это означает, что 8.4K выбрать 2 = 35275800 комбинаций. Алгоритм Я использую просто проходит через каждую комбинацию пару и делать пересечение множеств. Суть того, что я до сих пор находится ниже. Я хранение считается, что ключом в карте, со значением как вектор пара. Я использую структуру графа данных для хранения данных, но только «график» работы я м при использовании является get_neighbors (), который возвращает B подмножество для элемента из A. я знаю, что элементы в графе упорядочены от индекса 0 до 8.4K. get_overlap недействительными (график & г, отображение и наложение) {карта :: итератора его; EdgeList el_i, el_j; набор пересекаются; size_t I, J; VertexList ил = g.vertices (); для (я = 0; г <vl.size () - 1; я ++) {el_i = g.get_neighbors (я); для (J = I + 1, J <vl.size (); j ++) {el_j = g.get_neighbors (J); set_intersection (el_i.begin (), el_i.end (), el_j.begin (), el_j.end (), вставки (пересекаются, intersect.begin ())); INT num_overlap = intersect.size (); она = overlap.find (num_overlap); если (это == overlap.end ()) {вектор температуры; temp.push_back (A_pair (I, J)); overlap.insert (пара (num_overlap, темп)); } Еще {вектор темп = IT-> второй; temp.push_back (A_pair (I, J)); перекрываются [num_overlap] = темп; }}}} Я бежал эту программу в течение почти 24 часов, и го элемента в течение цикла достигла итерация 250 (я печатаю каждый я в лог-файл). Это, конечно, далеко от 8.4K (хотя я знаю, как Итерации продолжаются, количество сравнений будет укорачивать, так как у = я + 1). Есть ли более оптимальный подход? Edit: Чтобы было ясно, цель здесь, в конечном счете найти верхний к перекрывается пар. Изменить 2: Благодаря @Beta и другие для указывая оптимизаций. В частности, корректирование карты напрямую (вместо того, чтобы копировать его содержимое и сброс значения карты) значительно улучшили производительность. В настоящее время она работает в считанные секунды. temp.push_back (A_pair (I, J)); перекрываются [num_overlap] = темп; }}}} Я бежал эту программу в течение почти 24 часов, и го элемента в течение цикла достигла итерация 250 (я печатаю каждый я в лог-файл). Это, конечно, далеко от 8.4K (хотя я знаю, как Итерации продолжаются, количество сравнений будет укорачивать, так как у = я + 1). Есть ли более оптимальный подход? Edit: Чтобы было ясно, цель здесь, в конечном счете найти верхний к перекрывается пар. Изменить 2: Благодаря @Beta и другие для указывая оптимизаций. В частности, корректирование карты напрямую (вместо того, чтобы копировать его содержимое и сброс значения карты) значительно улучшили производительность. В настоящее время она работает в считанные секунды. temp.push_back (A_pair (I, J)); перекрываются [num_overlap] = темп; }}}} Я бежал эту программу в течение почти 24 часов, и го элемента в течение цикла достигла итерация 250 (я печатаю каждый я в лог-файл). Это, конечно, далеко от 8.4K (хотя я знаю, как Итерации продолжаются, количество сравнений будет укорачивать, так как у = я + 1). Есть ли более оптимальный подход? Edit: Чтобы было ясно, цель здесь, в конечном счете найти верхний к перекрывается пар. Изменить 2: Благодаря @Beta и другие для указывая оптимизаций. В частности, корректирование карты напрямую (вместо того, чтобы копировать его содержимое и сброс значения карты) значительно улучшили производительность. В настоящее время она работает в считанные секунды. }}}} Я бежал эту программу в течение почти 24 часов, и го элемента в течение цикла достигла итерация 250 (я печатаю каждый я в лог-файл). Это, конечно, далеко от 8.4K (хотя я знаю, как Итерации продолжаются, количество сравнений будет укорачивать, так как у = я + 1). Есть ли более оптимальный подход? Edit: Чтобы было ясно, цель здесь, в конечном счете найти верхний к перекрывается пар. Изменить 2: Благодаря @Beta и другие для указывая оптимизаций. В частности, корректирование карты напрямую (вместо того, чтобы копировать его содержимое и сброс значения карты) значительно улучшили производительность. В настоящее время она работает в считанные секунды. }}}} Я бежал эту программу в течение почти 24 часов, и го элемента в течение цикла достигла итерация 250 (я печатаю каждый я в лог-файл). Это, конечно, далеко от 8.4K (хотя я знаю, как Итерации продолжаются, количество сравнений будет укорачивать, так как у = я + 1). Есть ли более оптимальный подход? Edit: Чтобы было ясно, цель здесь, в конечном счете найти верхний к перекрывается пар. Изменить 2: Благодаря @Beta и другие для указывая оптимизаций. В частности, корректирование карты напрямую (вместо того, чтобы копировать его содержимое и сброс значения карты) значительно улучшили производительность. В настоящее время она работает в считанные секунды. это долгий путь от 8.4K (хотя я знаю, как Итерации продолжаются, количество сравнений будет укорачивать, так как у = я + 1). Есть ли более оптимальный подход? Edit: Чтобы было ясно, цель здесь, в конечном счете найти верхний к перекрывается пар. Изменить 2: Благодаря @Beta и другие для указывая оптимизаций. В частности, корректирование карты напрямую (вместо того, чтобы копировать его содержимое и сброс значения карты) значительно улучшили производительность. В настоящее время она работает в считанные секунды. это долгий путь от 8.4K (хотя я знаю, как Итерации продолжаются, количество сравнений будет укорачивать, так как у = я + 1). Есть ли более оптимальный подход? Edit: Чтобы было ясно, цель здесь, в конечном счете найти верхний к перекрывается пар. Изменить 2: Благодаря @Beta и другие для указывая оптимизаций. В частности, корректирование карты напрямую (вместо того, чтобы копировать его содержимое и сброс значения карты) значительно улучшили производительность. В настоящее время она работает в считанные секунды. корректирование карты напрямую (вместо того, чтобы копировать его содержимое и сброс значения карты) значительно улучшили производительность. В настоящее время она работает в считанные секунды. корректирование карты напрямую (вместо того, чтобы копировать его содержимое и сброс значения карты) значительно улучшили производительность. В настоящее время она работает в считанные секунды.
Aaron
1

голосов
1

ответ
2.3k

Просмотры

Recursively create apollonian gaskets [With solution]

Apollonian gaskets = They are planar fractals generated from triples of circles, where each circle is tangent to the other two. In his drawing of the gasket, we start with two externally tangent circles which diameter is D1 and D2. Then we add a third circle which diameter is D1+D2 and to which the two original circles are internally tangent. This is the first generation of circles. Each subsequent generation of circles is constructed by applying the following scheme: For any three circles A, B C of any previous generations which are tangent to each other a new circle is constructed which is tangent to A,B,C. The new circle must differ from all circles constructed so far. When a generation is complete, i.e no other circle can be added, then the next generation of circles can start being constructed. There is an additional stopping rule which prevents from generating infinitesimally small circles. A circle can be added to the gasket if and only if the lenght of its diameter is least minD which is a fixed positive value. Input consists of one line with three decimal numbers D1, D2 and minD. The number are separated by spaces. The format is usual decimal format (see also the examples bellow) with no exponent part. It holds that 1.0 ≤ D1, D2 ≤ 1000.0, 0.001 ≤ minD ≤ D1+D2. Ouput consists of one text line containing two decimal numbers L1 and L2. L1 represents the sum of areas of all circles in the gasket except for the bigggest circle. L2 represents the sum of perimeters of all circles in tin the gasket except for the bigggest circle. Both output values are rounded to 6 decimal digits. Decimal digits must be always present in the output even if some of them are zeros. Maximim output value is less than 107. Input 17.000000 40.000000 1.000000 Output 2439.258588 835.263228 2 For given D1 and D2, I create this two circles like this (first iteration): double D1 = 17.00; double D2 = 40.00; double minD = 1.00; int i = 250, j = 350; comp.addCircle(i, j, (int) D2, randomColor); comp.addCircle(i + (int) D2 / 2 + (int) D1 / 2, j, (int) D1, randomColor); comp.addCircle(i + (int) D1 / 2, j, (int) (D1 + D2), randomColor); UPDATE: So, solution is based on Descartes' theorem. We well work with radius, not diameter, and Curvature, with is 1/r. We will use double for all calculation, but if you work with significantly small numbers, I would prefer BigDecimal. It will slow algorithm, and you should use external method for finding square root, because BigDecimal doesn't have any. For given D1, D2, minD we modify code above for efficiency: Some preparation: double D1 = sc.nextDouble() / 2; double D2 = sc.nextDouble() / 2; minD = sc.nextDouble() / 2; double D3 = D1 + D2; So, first step looks like this: Next step looks a little bit more complicated. Assume we want to write a recursion to solve this problem, and according to Descartes' theorem, for given curvatures of three circles, tangent to each other, (pic. below) , we could find curvatures of two circles, but for our purposes, we need only small one, so, we can simplify formula to this.curve = a.curve + b.curve + c.curve + 2 * Math.sqrt(Math.abs(a.curve * b.curve + a.curve * c.curve + b.curve * c.curve)); Lets take a look at Apollonian gaskets again: try to play with it. See? It is same gaskets, but with different start condition. And whats more important for us, is that it is symmetrical! So, we will calculate just a half, and then multiply result by two! Lets write a recursion! Inputs will be curvatures of three circles. No output, we will use change our global variables. double radius_sum = 0.0; double square_radius_sum = 0.0; void createAG(double a, double b, double c){ double n = a + b + c + Math.sqrt(a*b + a*c + b*c + 4.0); if ((minD * n) < 1){ radius_sum += 2. / n; //Remember about symmetry? square_radius_sum += 2. * (1. / n) * (1. / n); //Remember about symmetry? createAG(a, b, n); createAG(a, c, n); createAG(b, c, n); } } To find the result, we will use formulas to calculate area and perimeter of circle. Perimeter is length of circumference and equal to . Area is equal to , as you already know, because we already calculated it in previous step, otherwise we had to store every radius and do more calculations. radius_sum = 2 * Math.Pi * radius_sum; square_radius_sum = Math.Pi * square_radius_sum; But we forget about our first two circles! Let's fix it! radius_sum += D1*2 + D2*2; square_radius_sum += D1*D1 + D2*D2; radius_sum = 2 * Math.Pi * radius_sum; square_radius_sum = Math.Pi * square_radius_sum; And there is always a room for improvement. For example, to use IEEE 754 in better way, I assume you will use 1. / x instead of 1 / x. Thank you! P.S. Copyright! This task (text and first picture of Apollonian gasket) is created by teachers at CTU, for course ALG. Picture of formulas is from Wikipedia. Everything else is public domain, if not patented, registered e.t.c.
JohnDow
1

голосов
2

ответ
416

Просмотры

Объединение столбцов условно с использованием data.table в R

У меня есть набор данных, который имеет набор растений. Два из этих растений имеют несколько линий. При анализе данных, я хотел бы иметь столбец, который будет иметь два растений, которые имеют несколько линий, вместе взятые, но и все другие, как они есть. Вот мой воспроизводимый набор данных: testset
black_sheep07
1

голосов
1

ответ
89

Просмотры

Foreach цикла + рекурсии

Я пытаюсь поставить этот код в более гибко, поэтому он может работать независимо от размера $ множеств массива. Я предполагаю, что это может быть сделано с помощью рекурсии, но не может найти правильный синтаксис PHP. $ Наборов = массив (массив (0, 1, 2, 3), массив (0, 1, 2, 3), массив (0, 1, 2, 3), массив (0, 1, 2, 3)); $ Комбинаций = массив (); Foreach ($ множества [0], как $ s1) Foreach ($ множества [1], как $ s2) Foreach ($ множества [2], как $ s3) Foreach ($ множества [3], как $ s4) $ комбинаций [] = массив ($ s1, $ s2, $ s3, s4 $); print_r ($ комбинации);
user3253804
1

голосов
4

ответ
153

Просмотры

C ++, а не в комбинации порядка элементов массива

Я пытаюсь получить все комбинации массива с C ++, например, что двойной * = песни1 новый двойной [размер]; Элементы в этом массиве {1,2,3,4,5} нужно добавить все возможные комбинации в стек, такие как: 1 + 2, 1 + 2 + 3, 1 + 2 + 3 + 4,1 + 2 + 3 + 4 + 5, 1 + 3, 1 + 3 + 4, 1 + 3 + 4 + 5, 1 + 4, 1 + 4 + 5, 1 + 5 ... проблема я бегу в I делаю это через 2 для петель и петли в то время как для (INT I = 0; г <размер - 1; я ++) {для (Int J = I, J <размер - 1; j ++) {двойной темп = песни1 [I] + песни1 [J + 1]; list1combos.push (температура); INT к = J + 2; в то время как (к
tom
1

голосов
4

ответ
230

Просмотры

Combinations, Power Sets No Idea where to even start

У меня есть эта проблема, я надеялся, люди могли бы указать меня в правильном направлении выяснить, потому что я даже не знаю, с чего начать. Вот настройки, у меня есть две таблицы в SQL Server, таблица А сводная таблица, таблица B представляет собой таблицу, детали, так что-то вроде этого: Таблица A ParentID Общая сумма 1 100 2 587 Таблица B ParentID ChildID Количество 1 1 8 1 2 7 1 3 18 1 4 93 2 5 2 6 500 82 2 7 5 8 2 10 Таким образом, для каждого ParentId, мне нужно придумать комбинации детей, чьи суммы их сумма равна общей сумме родителя. Таким образом, для ParentId 1 (100), было бы ChildIDs 2 и 4 (7 + 93), и я бы просто игнорировать ChildIDs 1 и 3. Для ParentId 2 было бы дети 5, 6, 7, и я бы игнорировать 8. Там будет нет фиксированного размера для детей комбинаций, которые могут быть объединены, чтобы равняться Parent. Так делают некоторые исследования, кажется, мне нужно, чтобы получить набор питания всех детей для каждого родителя. Затем оттуда я могу суммировать их общее количество и посмотреть, если любой из них равен Parent. Тем не менее, поправьте меня, если я ошибаюсь, но если есть N элементы в наборе, то набор мощности будет состоять из 2 ^ N числа комбинаций. Некоторые из этих родителей имеют более 750 детей и 2 ^ 750 является очень очень очень большим числом. Я основном .NET / парень SQL Server, но я открыт к попытке любых технологий, что люди будут думать имеют право на работу. Так несколько вопросов. 1) Должен ли я идти по пути, пытаясь выяснить булеана для каждого родителя или я ложное дерево с этим? 2) Является ли это alogrithm, который уже понял, и я просто делаю плохую работу найти его на Google? 3) Предполагая, что это может быть сделано, что бы правильный подход к ее решению?
DrRocket
1

голосов
2

ответ
110

Просмотры
1

голосов
1

ответ
923

Просмотры

Все комбинации из кадра данных в R

Я пытаюсь найти все комбинации (а не перестановки, порядок не имеет значения) из списка с различными ограничениями по структуре каждой комбинации. Я знаю combn () будет делать трюк для простого списка, и я попытался с помощью образца (), но моя потребность является более сложной. У меня есть кадр данных, который имеет три колонки, название, тип, стоимость. Я хочу, чтобы найти все возможные комбинации имен в наборах 7 (около 7 имен), где один из которых имеет тип 1, три типа 2, а остальные типа 3, а общая стоимость меньше, чем множество переменных. Я в полной потери для того, как сделать это, и я даже не уверен, R является правильным языком, чтобы сделать это. Должен ли я попробовать цикл с некоторыми вложенным, если заявления? > Dput (головка (образец)) структуры (список (Имя = структура (с (6L, 8L, 4L, 9L, 2L, 5L), .Label = с ( "Янтарный", "Синди", "Е", " 2-4 digest_0.6.4 grid_3.1.1 gtable_0.1.2 MASS_7.3-33 [7] munsell_0.4.2 parallel_3.1.1 proto_0.3-10 Rcpp_0.11.2 reshape2_1.4 scales_0.2.4 [13] stringr_0.6.2 tools_3.1.1 Пример данные: Имя Тип Стоимость Jason 2 6000 Jim 3 6200 Eric 3 9000 Lisa 1 2000 Cyndi 3 8000 Hannah 3 4500 E 2 7200 Matt 1 3200 Jesse 3 1200 Tat 3 3200 Ryan 1 5600 Amber 2 5222 Люси 2 1000 Один из возможных комбинаций, если общая стоимость устанавливается на 60k: Лиза, Джейсон, янтарный, Люси, Tat, Джесси, Ханна это одна из возможных комбинаций, а Лиза тип 1, Джейсон, Amber и Люси есть тип 2, а остальные три являются тип 3, а общая стоимость всех 7 ниже 60k. Другая возможная комбинация будет: Райан, Джейсон, янтарный, Люси, Tat, Джесси, Ханна Райан заменил Лизу как тип 1 из первой комбинации. Стоимость еще ниже 60к. Я пытаюсь получить все возможные комбинации, где указанные выше условия являются истинными.
Matthew Hartwig
1

голосов
2

ответ
138

Просмотры

Построить все возможные упорядоченные комбинации из списка

У меня есть список .Net и мне было интересно, что большинство (или «разумно» близко) эффективным способом было бы объединить их следующим образом: Учитывая список имеет 3 элемента ( «A», «B» и «C» ), что я в основном нужно следующее должны быть возвращены из метода: ABC AB AC BC ABC в основном порядок элементов внутри должен оставаться неизменным (A> B> C) и, следовательно, только, например, 4) «AB» выше возможно / должны быть возвращены, а наоборот ( «B A») нет. Я возился с этим на некоторое время теперь, но я далек от элегантного кода в данный момент, но, возможно, кто-то сделал что-то подобное уже и знает, как сделать это правильно / эффективно.
Jörg B.
1

голосов
2

ответ
72

Просмотры

SQL: Combinations by Type

I have sets organized by type. I want to find all unique combinations of sets, taking one set from each type. So I start with this: table1: row_id type set 1 a 1 2 a 2 3 a 3 4 b 4 5 b 5 6 c 6 and want to get this: table2: row_id combo_id type set 1 1 a 1 2 1 b 4 3 1 c 6 4 2 a 2 5 2 b 4 6 2 c 6 7 3 a 3 8 3 b 4 9 3 c 6 10 4 a 1 11 4 b 5 12 4 c 6 13 5 a 2 14 5 b 5 15 5 c 6 16 6 a 3 17 6 b 5 18 6 c 6 The first idea might be to use CROSS JOIN and get something like this: table3: row_id combo_id a_set b_set c_set 1 1 1 4 6 2 2 2 4 6 3 3 3 4 6 4 4 1 5 6 5 5 2 5 6 6 6 3 5 6 However, my real data has thousands of types with no upper bound on that number, so I think the setup in table2 is necessary. I see there are many Stack Overflow questions about SQL combinations. However, none that I found addressed sorting by type, let alone an unbounded number of types. I'm using PLSQL Developer with Oracle 10g. Thanks!
esa606
1

голосов
4

ответ
3.3k

Просмотры

Нахождение всех возможных комбинаций данного массива в Java

Я работаю над проблемой в Java, чтобы найти все возможные комбинации для произвольного Отправного массива, по не декременту значения от по одному из каждого элемента массива, пока значение 1 достигаются при каждом индексе. Я начал ниже тест, но не получил очень далеко. Я хотел бы получить некоторую помощь в решении моей проблемы, пожалуйста. импорт org.junit.Assert; импорт org.junit.Test; общественного класса ComboTest {@Test общественного недействительными тест () {INT [] [] = {ответы {4, 3, 2}, {3, 3, 2}, {2, 3, 2}, {1, 3, 2 }, {4, 2, 2}, {3, 2, 2}, {2, 2, 2}, {1, 2, 2}, {4, 1, 2}, {3, 1, 2}, {2, 1, 2}, {1, 1, 2}, {4, 3, 1}, {3, 3, 1}, {2, 3, 1}, {1, 3, 1}, {4 , 2, 1}, {3, 2, 1}, {2, 2, 1}, {1, 2, 1}, {4, 1, 1}, {3, 1, 1}, {2, 1 , 1}, {1, 1, 1},}; INT [] начать = {4, 3, 2}; INT тусклый = 1; для (INT I = 0; я <start.length; я ++) {тусклым * = пуск [I]; } INT [] [] = новый комбо INT [тусклое] [start.length]; для (INT I = 0; г <комбо [0] .length; я ++) {комбо [0] [I] = начать [I]; } Для (INT = 1; г <combos.length; я ++) {для (Int J = 0; J <комбо [I] .length; j ++) {INT к = комбо [я - 1] [J] - 1 ; если (к <1) {к = начать [J]; } комбо [I] [J] = K; }} Для (INT I = 0; г <combos.length; я ++) {для (Int J = 0; J <комбо [I] .length; j ++) {Assert.assertEquals (ответы [I] [J], комбо [I] [J]);
Frank
1

голосов
1

ответ
866

Просмотры

Объединить строки & Sum значений в рабочем листе

У меня есть Excel лист с ниже (трубы «|», чтобы разграничивать столбцы) данных. A | B | C | Х | 50 | 60 D | E | F | X | 40 | 30 A | B | C | Х | 10 | 20 A | B | C | Y | 20 | 20 A | B | C | X | 20 | 70 D | E | F | X | 10 | 50 A | B | C | Y | 10 | 10 результат я пытаюсь получить это: | B | C | X | 80 | 150 A | B | C | Y | 30 | 30 D | E | F | X | 50 | 80 Значения A, B, C и D, E, F, как уникальные идентификаторы. На самом деле только А или D могут быть рассмотрены. Значения X и Y, как «типы», и целые числа приведены значения суммы. Этот образец был упрощен, есть тысячи уникальных идентификаторов, десятки типов и десятка значений суммы. Строки не сортируется, типы могут быть расположены в более высоких или более низких рядах. Я пытаюсь избежать использования сводной таблицы. Тусклое LastRow As Integer Dim LastCol As Integer Dim I As Integer = LastCol листов (1) .Cells (1, Columns.Count) .END (xlToLeft) .Column LastRow = листы (1) .Cells (Rows.Count, 1). End (xlUp). Строка Для я = 1 Для того, чтобы LastRow ???? Далее я Код выше добирается до точки пробегает по строкам, но я не ясно о том, что после этой точки.
clippertm
-1

голосов
0

ответ
14

Просмотры

Алгоритм, чтобы найти все различные суммы из списка номеров

Ввод пробы: 4 6 4 3 2 2 1 1 Первого число = В общей сложности, Т = Второй номер Количество чисел, S После S число = Значение чисел. (Повторение может произойти, вход дается в невозрастанию порядке) Моя работа состоит в том, чтобы найти все «различные суммы» с использованием номеров из списка, которые добавляют до T. Таким образом, пример вывода для данного входа будет: 4 3 + 1 2 +2 2 + 1 + 1 Моя мысль была идти по списку 1 на 1, и найти все комбинации ряда с различным числом, вплоть до размера списка чисел - # чисел уже оценили. Вы можете создать список из каждой комбинации и добавить список в HashSet из списков (HashSet для предотвращения дубликатов). Таким образом, вы бы проверить для всех 1, 2, 3, 4, 5 и 6-размерных комбинаций, чтобы пойти с 4 первого Тогда все 1, 2, 3, 4, 5 комбинаций размеров идти с 3, игнорируя 4 Тогда все 1, 2, 3, 4 размера комбинации идти с 2, игнорируя 4 и 3 и т.д. Я не уверен, если этот алгоритм действительно эффективен у меня трудное время и с реализацией этого алгоритма. Я не могу обернуть мою голову вокруг, как мертвую структуру таким образом, чтобы получить желаемые комбинации.
And I Am
1

голосов
1

ответ
2.3k

Просмотры

Генерация всех сочетаний без повторений с использованием MATLAB

У меня есть 4 комплекта каждый из которых содержит 6 элементов, из которых я хочу, чтобы генерировать все возможные векторы размера 8 были первые два элемента из SET1 вторых 2 из set2 третьей 2 из SET3 вперед 2 из SET4 без повторения в точках, взятых из каждого множества таких что элементы 1,2 / 3,4 / 5,6 / 7,8 всегда различны. Мои комбинации целевого номера есть (6choose2) ^ 4. Любая помощь, пожалуйста. D1 = [2 + 2г, 2 + 1i 1 + 2i 1 + 1i, 2,1i]; D2 = [- 2 + 2г, -2 + 1i, -1 + 2i, -1 + 1i, -1,2i]; D3 = [- 2-2i, -2-я, -1-я, -1-1i, -2, -1i]; Д4 = [2-2i, 2-я, 1-2i, -1 + 1i, 1, -2i];
1

голосов
1

ответ
113

Просмотры

Aggregation of all possible unique combinations with observations in the same column in R

I am trying to shorten a chunk of code to make it faster and easier to modify. This is a short example of my data. order obs year var1 var2 var3 1 3 1 1 32 588 NA 2 4 1 2 33 689 2385 3 5 1 3 NA 678 2369 4 33 3 1 10 214 1274 5 34 3 2 10 237 1345 6 35 3 3 10 242 1393 7 78 6 1 5 62 NA 8 79 6 2 5 75 296 9 80 6 3 5 76 500 10 93 7 1 NA NA NA 11 94 7 2 4 86 247 12 95 7 3 3 54 207 Basically, what I want is R to find any possible and unique combination of two values (observations) in column "obs", within the same year, to create a new matrix or DF with observations being the aggregation of the originals. Order is not important, so 1+6 = 6+1. For instance, having 150 observations, I will expect 11,175 feasible combinations (each year). I sort of got what I want with basic coding but, as you will see, is way too long (I have built this way 66 different new data sets so it does not really make a sense) and I am wondering how to shorten it. I did some trials (plyr,...) with no real success. Here what I did: # For the 1st year, groups of 2 obs newmatrix
16eco
1

голосов
4

ответ
458

Просмотры

Получение всех перестановок ВСЕХ подсписков из списка целых чисел

У меня возникли проблемы с этой проблемой. В принципе, у меня есть список целых чисел, например, список = [1, 2, 3] Я хочу, чтобы получить все возможные перестановки каждого подмножества. Я знаю, что существуют аналогичные вопросы в Интернете, но я не мог найти то, что делает каждую перестановку, а также каждое подмножество. Другими словами, я хочу: функцию (список) = [], [1], [2], [3], [1, 2], [2, 1], [1, 3], [3,1] , [2, 3], [3,2], [1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1] Я понимаю, что выход будет получать очень большой даже для небольшого размера списка ввода. К сожалению, я просто не могу понять, как сделать такую ​​проблему. Спасибо!
jj172
1

голосов
1

ответ
835

Просмотры

Как избежать ошибок памяти при сохранении всех комбинаций в списке

Я генерация всех комбинаций из набора цифр, а затем хочу создавать комбинации этих комбинаций. Из-за огромного количества возможных комбинаций я получаю ошибку памяти. Я посмотрел на следующие вопросы, но ни один из них действительно решить мою проблему: Создание всех комбинаций набора и кончаются itertools.combinations Python памяти () проблемы с памятью ошибки Python список памяти Я генерирующего мой список, используя следующий метод: #generate все комбинации 1 и 0 размер 30 set_1 = itertools.product ([0,1], повторить = 30) #generate все комбинации множества 1, размером 5 set_2 = [кортеж (с) для с в pulp.allcombinations ( set_1, 5)] для множеств в set_2: печать (наборы) Их ошибка памяти происходит во время его формирования set_2. Я хотел бы еще иметь возможность перебрать set_2 как мне нужно будет получить доступ множества позже.
user35510
1

голосов
2

ответ
1.4k

Просмотры

Python itertools длина комбинации

Оценил любой входной сигнал об этой практике проблемы: Дана строка длины п и целого числа к, печать все возможные комбинации длины к (печати NCK) при ограничении, что 1 а, б, в аЬс, 3 -> ABC
Macaroni
1

голосов
2

ответ
75

Просмотры

How to find combinations in this way in C#

У меня есть текст в textBox1 "Aplle, Orandge, орехи, вишню". Там может быть больше слов добавлены в текстовое поле, даже 30. Мне нужно найти комбинацию: Первый щелчок - я textBox2.Text = «Aplle» И textBox3.Text = «Orandge, орехи, вишню» Второй щелчок textBox2.Text = "Aplle, Orandge" И textBox3.Text = "Орехи, Вишни" Третий textBox2.Text = "Aplle, Orandge, Nuts" И textBox3.Text = "Вишня" Сначала я понимаю, что мне нужен счетчик, который сосчитать запятые, если CommaCounter = 1, чем раскол после первой запятой, если CommaCounter = 2, разделите после второй запятой, если CommaCounter = 100, чем раскол после запятой 100. чем мне нужен сплиттер, я думаю, но и не понимает, как на самом деле это сделать. Почему мне нужно найти все комбинации нажмите на мыши, потому что каждая комбинация будет использоваться другой мыши ведьма делает другую функцию. Я вставить фотографии, как это должно выглядеть. вот код, который я начал, конечно незавершенной, недействительны ... ИНТ CommaCounter = 0; строка Part1, Part2; Строка Vārds = TextBox1.Text; символ [] delimiterChars = { ''}; Строка [] слова = Vards.Split (delimiterChars); Строка SEARCHTERM = ""; вар matchQuery = от слова в словах, где word.ToLowerInvariant () == searchTerm.ToLowerInvariant () выберите слово; INT WordCount = matchQuery.Count (); Еогеасп (строка с прописью) {textBox2.Text = Part1.ToString (); textBox3.Text = Part2.ToString (); } INT CommaCounter = 0; строка Part1, Part2; Строка Vārds = TextBox1.Text; символ [] delimiterChars = { ''}; Строка [] слова = Vards.Split (delimiterChars); Строка SEARCHTERM = ""; вар matchQuery = от слова в словах, где word.ToLowerInvariant () == searchTerm.ToLowerInvariant () выберите слово; INT WordCount = matchQuery.Count (); Еогеасп (строка с прописью) {textBox2.Text = Part1.ToString (); textBox3.Text = Part2.ToString (); } INT CommaCounter = 0; строка Part1, Part2; Строка Vārds = TextBox1.Text; символ [] delimiterChars = { ''}; Строка [] слова = Vards.Split (delimiterChars); Строка SEARCHTERM = ""; вар matchQuery = от слова в словах, где word.ToLowerInvariant () == searchTerm.ToLowerInvariant () выберите слово; INT WordCount = matchQuery.Count (); Еогеасп (строка с прописью) {textBox2.Text = Part1.ToString (); textBox3.Text = Part2.ToString (); } Еогеасп (строка с прописью) {textBox2.Text = Part1.ToString (); textBox3.Text = Part2.ToString (); } Еогеасп (строка с прописью) {textBox2.Text = Part1.ToString (); textBox3.Text = Part2.ToString (); }
Asceadtius
1

голосов
2

ответ
143

Просмотры

Записать все оптимальные выравнивания последовательностей при расчете Левенштейн расстояния в Julia

Я работаю на расстояния Левенштейна с Wagner-Fischer алгоритма Джулии. Было бы легко получить оптимальное значение, но немного трудно получить оптимальную последовательность операций, как вставки или удаления, в то время как трассировку с правом нижнем углу матрицы. Я могу записать информацию указателя каждого г [я] [J], но это может дать мне 3 направления, чтобы вернуться к д [я-1] [J-1] для подстановки, [я-1] d [J] для удаления и D [I] [J-1] для вставки. Так что я пытаюсь получить все комбинации наборов операций, которые дали мне оптимальное расстояние Левенштейн. Кажется, что я могу хранить одну операции, установленную в одном массиве, но я не знаю, общее количество всех комбинаций, а также там длину, так что это будет трудно для меня, чтобы определить массив для хранения операции, установленной во время подсчета процесс. Как я могу генерировать массивы в то время как сохранить прежние из них? Или я должен использовать Dataframe?
Catcoin7
1

голосов
1

ответ
134

Просмотры

Объяснение получения комбинаций из IEnumerable рекурсивно

Недавно я наткнулся на следующий фрагмент кода написанного Pengyang здесь: Что это лучший способ, чтобы найти все сочетания элементов в массиве? статический IEnumerable GetKCombs (IEnumerable список, Int длина), где Т: IComparable {если (длина == 1) возвращает list.Select (т => нового Т [] {т}); вернуть GetKCombs (список, длина - 1) .SelectMany (т => list.Where (о => o.CompareTo (t.Last ())> 0), (t1, t2) => t1.Concat (новый Т [ ] {t2})); } Вызов GetKCombs со списком {1, 2, 3, 4} и длиной 2 вернется: {1,2} {1,3} {1,4} {2,3} {2,4} {3 , 4} код работает прекрасно, но я не понимаю, как и почему этот код работает, я был бы признателен, если кто-то может объяснить мне.
1

голосов
1

ответ
84

Просмотры

крест присоединиться к / слияния dataframe1 для создания dataframe2 комбинаций на основе столбца в dataframe1

Это тот же вопрос: крест присоединиться к / слияния для создания dataframe комбинаций (порядок не имеет значения) ДФ = pd.DataFrame ({ 'Zone2': [ 'IL', 'IL-1', 'IL-3' , 'IL'], 'город': [ 'Чикаго', 'Сент-Луис', 'Монмут', 'Де-Мойн'], 'zone1': [ 'Середина', 'Mid', 'Mid', 'Mid' ]}) Я хочу, чтобы создать второй dataframe всех комбинаций колонка = город. Это так, как я это сделать, но должно быть эффективным способом сделать это за меньшее число шагов. df2 = pd.DataFrame (список (itertools.combinations (список (ДФ [ 'город']), 2))) df2.columns = [ 'city_1', 'city_2'] = df2 df2.merge (ДФ, left_on =» city_1' , right_on = 'город'). сливаться (ДФ, left_on = 'city_2', right_on = 'город', суффиксы = (»
codingknob
1

голосов
1

ответ
96

Просмотры

PHP MySQL сочетание параметров поиска

я получил 4 флажков результата filterung MySQL. Флажки могут быть активированы все или одного, тоже. Я не знаю, как сделать SQL заявление. Действительно ли я должен использовать все объединенные возможности вручную или есть проще решение? Может быть, с «переключателем»? Нет в первом заявлении я есть. А если (!!! $ Vart1 == "1" и Исеть ($ vart2) и Исеть ($ vart2) и Исеть ($ vart2) и Исеть ($ vart4)) {$ tname_sql = "a.tdesc = 'опция1' И"; }; Сколько вариантов есть? Спасибо за помощь. С уважением, Олаф.
Olaf K.
1

голосов
1

ответ
418

Просмотры

Java Сочетание поколения

Я ищу, чтобы увидеть, если Java имеет некоторые особенности, комбинаторика, что я могу использовать. Я хочу иметь динамический список, и в чистом виде, есть Java генерировать все комбинации. Учитывая список объектов, таких как строки ниже. Есть простой способ / чистый способ / предпочтительно что-то уже встроены в ядро ​​Java для создания всех комбинаций элементов? например, если у меня было: Список предметов = новый ArrayList (); items.Add ( "а"); items.Add ( "б"); Список результат = generateCombinationOf (элементы); Я желаю для результатов, чтобы содержать: {{}, { «а»}, { «б»}, { «а», «б»}} Примечание стороны: я был в состоянии генерировать списки, как это в Mathematica в прошлом. У меня есть проект стороны, где я хочу использовать Java, и я надеюсь, чтобы избежать интеграции с Mathematica, если это вообще возможно, но будет, если я могу»
James Oravec

Просмотр дополнительных вопросов