С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.03.2019
Сообщений: 126
1

Мультипотоки генератор комбинаций

23.02.2023, 16:15. Показов 447. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, есть код, суть вопроса, как сделать что бы он в мультипотоках делал генерацию, затем ответ от генерации(каждого потока) направлял в специальную функцию, которая бы работала с каждым отдельно потоком.
(сохранять в вектор ответы не вариант гигов озу не хватит, поэтому буду обрабатывать инфу по факту поступления.)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
std::string gen(std::vector<char> alphabet, std::size_t idx, std::size_t digits)
{
    std::string ret(digits, alphabet[0]);
 
    std::size_t alphas = alphabet.size();
    while (digits--)
    {
        ret[digits] = alphabet[idx % alphas];
        idx /= alphas;
    }
    return ret;
}
 
void gen_and_out(std::size_t n, std::vector<char> alphabet)
{
    std::size_t numbers = 1;
    std::size_t alphas = alphabet.size();
    for (std::size_t i = 0; i < n; ++i)
    {
        numbers *= alphas; // на каждом шаге чисел в alphas раз больше
        for (std::size_t cur = 0; cur < numbers; ++cur)
        {
            std::cout << gen(alphabet, cur, i + 1) << std::endl;
            workt(gen(alphabet, cur, i + 1));
        }
    }
}
 
void workt(std::string gen)
{
    ///code
    ///code
    ///code
    ///code
    ///code
    ///code
    std::cout << gen << std::endl;
}
int main()
{
    gen_and_out(50, std::vector<char>({ 'a', 'b', 'c'  }));
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2023, 16:15
Ответы с готовыми решениями:

Генератор комбинаций с повторениями
Вот код он выводит все комбинации с повторениями от 1 до 3 и можно увеличить до 9. Беда в том что...

Генератор комбинаций
Всем доброго дня(утра,вечера,ночи) сразу к делу. пишу прогу(интерфейс во вложении снизу) суть в...

генератор комбинаций
Помогите, плиз! Надо написать программку по комбинаторике. Но никак не могу алгоритм продумать и...

Генератор ВСЕХ комбинаций
Требуется программа, которая будет способна составить X комбинаций из Y символов, и сохранить...

Генератор уникальных комбинаций
В общем появилась задача сделать програмку в которой из группы строк(слов/словосочетаний) нужно...

7
Вездепух
Эксперт CЭксперт С++
12792 / 6669 / 1795
Регистрация: 18.10.2014
Сообщений: 16,876
23.02.2023, 18:19 2
Цитата Сообщение от Siserian Посмотреть сообщение
генератор комбинаций
Цитата Сообщение от Siserian Посмотреть сообщение
что бы он в мультипотоках делал генерацию
Генерацию чего? Каких "комбинаций"?
0
0 / 0 / 0
Регистрация: 15.03.2019
Сообщений: 126
23.02.2023, 23:32  [ТС] 3
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Генерацию чего? Каких "комбинаций"?
gen_and_out(50, std::vector<char>({ 'a', 'b', 'c' }));
сделать мультипоточным.

Добавлено через 36 секунд
т.е. у меня сейчас доходит до 18 длины и там усё...
а так ядер много, нужно что бы все были задействованы в генерации
0
0 / 0 / 0
Регистрация: 15.03.2019
Сообщений: 126
24.02.2023, 11:17  [ТС] 4
Если ещё проще говорить, мне нужен генератор всех возможных комбинаций на мультипотоках, что бы я мог указать данные с каких генерим 'a', 'b', 'c' , мог бы указать длину, а ответ от генерации(каждого потока) записывался(перезаписывался) в genthread[thread] = ответ;
0
0 / 0 / 0
Регистрация: 15.03.2019
Сообщений: 126
25.02.2023, 11:07  [ТС] 5
HELP
0
фрилансер
5846 / 5377 / 1103
Регистрация: 11.10.2019
Сообщений: 14,374
25.02.2023, 11:13 6
Siserian, раскидай по потокам так: в одном потоке перебираются все комбинации, начинающиеся с одного и того же элемента. Таким образом можно удобно заюзать все ядра (например имеется 4 ядра, 4 потока полностью отработали с a,b,c,d, затем запускаются ещё 4 с e,f,g,h и так далее)
0
0 / 0 / 0
Регистрация: 15.03.2019
Сообщений: 126
25.02.2023, 11:49  [ТС] 7
я думаю мозг сломаю.... 12 ядер 24 потока....
0
фрилансер
5846 / 5377 / 1103
Регистрация: 11.10.2019
Сообщений: 14,374
25.02.2023, 12:01 8
Siserian, для примера:

пусть, имеем 2 ядра. И набор элементов {1,2,3,4,5,6,7,8}

логически разбиваем на такие наборы:

{1}+{2,3,4,5,6,7,8} // первый элемент всегда "1", остальные комбинируем через std::next_permutation в потоке №1
{2}+{1,3,4,5,6,7,8} // первый элемент всегда "2", комбинируем в потоке №2

{3}+{1,2,4,5,6,7,8} //поток №1
{4}+{1,2,3,5,6,7,8} //поток №2

{5}+{1,2,3,4,6,7,8} //поток №1
{6}+{1,2,3,4,5,7,8} //поток №2

{7}+{1,2,3,4,5,6,8} //поток №1
{8}+{1,2,3,4,5,6,7} //поток №2
0
25.02.2023, 12:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2023, 12:01
Помогаю со студенческими работами здесь

Генератор комбинаций символов
Дана матрица состоящая из русского алфавита, помогите пожалуйста сделать программу которая генерила...

Мультипроцессинг функции ( генератор комбинаций)
Есть код который записывает в файл рандомные комбинации букв и цифр : import random, time ...

Генератор всех возможных комбинаций
Нужно написать генератор всех возможных комбинаций, допустим состоящих из 2-х, 3-х, 4-х символов и...

Генератор всех возможных комбинаций строки
Помогите сделать генератор ВСЕХ значений видов: CBCCB BCCBC Где: C - цифры(2-9) B - буквы(A-Z)...

Генератор комбинаций из заданных цифр в строку
Здравствуйте! Помогите пж, необходимо, чтобы выводило комбинации из заданных цифр в строчку, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru