<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3843433</guid>
        <pubDate>Fri, 08 Jan 2021 04:22:52 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3843433</link>
        <description><![CDATA[mkudritsky: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419935&view=findpost&p=3840062'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2020-10-06T20:32:42+03:00">06.10.20, 17:32</time></span><div class='quote '>На сочетания есть простой рекурсивный алгоритм, размещения из каждого сочетания получаются пермутациями. Не уверен в эффективности, но работае</div></div><br>
Правильно делаете, что не уверены в эффективности рекурсии&#33;<br>
При решении другой комбинаторной задачи мы выявили, что рекурсия минимум в 3 раза уменьшает скорость работы программы.<br>
<br>
P.S. В этой связи мы, например, переписали стандартный алгоритм поиска файлов по маске в файловой системе.<br>
Убрали рекурсию и сделали все без рекурсии.<br>
Эффективностью нового алгоритма не нарадуемся&#33;]]></description>
        <author>mkudritsky</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840091</guid>
        <pubDate>Wed, 07 Oct 2020 07:49:19 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840091</link>
        <description><![CDATA[OpenGL: Да, что-то я не подумал про то, что тебе не просто размещения, а размещения с повторениями нужны. Их лучше самому написать, приспособить что-то из std вряд-ли будет сильно проще, чем написание. По крайней мере я всегда сам их генерировал.]]></description>
        <author>OpenGL</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840082</guid>
        <pubDate>Wed, 07 Oct 2020 04:51:56 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840082</link>
        <description><![CDATA[JoeUser: <strong class='tag-b'>Qraizer</strong>,  :good:]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840079</guid>
        <pubDate>Wed, 07 Oct 2020 03:30:40 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840079</link>
        <description><![CDATA[Qraizer: Та понял я. Просто в контексте &quot;брутфорс по словарю&quot; обычно имеются в виду словарные атаки.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419935&view=findpost&p=3839982'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2020-10-06T08:22:51+00:00">06.10.20, 08:22</time></span><div class='quote '>И мне нужно из словаря размером D сгенирировать все размещения длинной от M до N, где M&gt;0 и N&gt;=M.</div></div>У тебя очень простая задача. Считай, что лексемы твоего словаря – это цифры D-ричной системы счисления. Просто перебирай все n-значные числа, где n пробегает весь диапазон от M до N <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-10-07T03:33:06+00:00">07.10.20, 03:33</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419935&view=findpost&p=3840075'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2020-10-06T21:30:19+00:00">06.10.20, 21:30</time></span><div class='quote '>словарь - &#39;a&#39;,&#39;b&#39;<br>
длина - три<br>
найти все размещения из словаря по длине три?</div></div>2-ичная система, цифры a и b. n пробегает от 1 до 3:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a</div><div class="code_line">b</div><div class="code_line">aa</div><div class="code_line">ab</div><div class="code_line">ba</div><div class="code_line">bb</div><div class="code_line">aaa</div><div class="code_line">aab</div><div class="code_line">aba</div><div class="code_line">abb</div><div class="code_line">baa</div><div class="code_line">bab</div><div class="code_line">bba</div><div class="code_line">bbb</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-10-07T03:34:35+00:00">07.10.20, 03:34</time></span></span><br>
P.S. Не думаю, что в std что-то существенно сможет помочь.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840075</guid>
        <pubDate>Tue, 06 Oct 2020 21:30:19 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840075</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419935&view=findpost&p=3840074'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2020-10-06T21:13:29+00:00">06.10.20, 21:13</time></span><div class='quote '> как из этого безобразия получить словарь</div></div><br>
Я привел упрощенный вариант - когда в словаре составляющие - символы. Из них строится &quot;Passphrase&quot;.<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">Но словарь может быть и не из символов, а допустим из слов. <br>
Это ничего не меняет&#33; &quot;Мама раму мама мама мама мама мыла раму&quot; - валидный вариант.</div></div><br>
Ну давай на примере, чтобы уже было совсем просто:<br>
словарь - &#39;a&#39;,&#39;b&#39;<br>
длина - три<br>
найти все размещения из словаря по длине три?<br>
Примеры вразброс:<br>
б<br>
баб<br>
аб<br>
бба<br>
aaa<br>
aa<br>
ба<br>
...]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840074</guid>
        <pubDate>Tue, 06 Oct 2020 21:13:29 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840074</link>
        <description><![CDATA[Qraizer: Секундочку. Это ж абсолютно другая задача. У тебя не словарь на входе, а набор лексем и правил, как из этого безобразия получить словарь.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840073</guid>
        <pubDate>Tue, 06 Oct 2020 20:53:37 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840073</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419935&view=findpost&p=3840070'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2020-10-06T20:25:38+00:00">06.10.20, 20:25</time></span><div class='quote '>У тебя в словаре могут быть повторения?</div></div><br>
Пусть в словаре, допустим, повторения будут. Но это не должно влиять на решение,<br>
т.к. - словарь, это множество <strong class='tag-b'>уникальных</strong> значений, значит дубли из него убираем<br>
сразу же перед основным решением.<br>
<br>
Бытовой пример:<br>
<br>
Cгенерировать полный вариант набора паролей из алфавита [&#39;a&#39;,&#39;b&#39;] - длиной, допустим, от 1 до 8. Понятное дело,<br>
если &quot;полный&quot; - то с повторениями. &quot;aaaaa&quot; - валидный набор, к примеру. Твое решение?<br>
<br>
ЗЫ: И тут скорее не сам алгоритм интересен, а именно использование возможностей стандартной библиотеки&#33;<br>
Поиск, переборы, перестановки, обмены, срезы ... В общем, всем тем, чем богат #include &lt;algorithm&gt;.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840070</guid>
        <pubDate>Tue, 06 Oct 2020 20:25:38 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840070</link>
        <description><![CDATA[Qraizer: У тебя в словаре могут быть повторения? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-10-06T20:26:41+00:00">06.10.20, 20:26</time></span></span><br>
В любом случае повторения легко сводятся к их отсутствию, достаточно лишь добавить к элементам индексы уникальности, учитываемые в сравнениях и игнорируемые в остальных случаях. Т.е. дело лишь за кастомным сравнением и value_type]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840066</guid>
        <pubDate>Tue, 06 Oct 2020 18:31:43 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840066</link>
        <description><![CDATA[JoeUser: <strong class='tag-b'>Qraizer</strong>, есть нюанс ... <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">с повторениями</span></strong>&#33; <br>
Ломает всю картину моего прекрасного мира  :&#39;(]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840062</guid>
        <pubDate>Tue, 06 Oct 2020 17:32:42 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840062</link>
        <description><![CDATA[Qraizer: На сочетания есть простой рекурсивный алгоритм, размещения из каждого сочетания получаются пермутациями. Не уверен в эффективности, но работает.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840059</guid>
        <pubDate>Tue, 06 Oct 2020 15:59:00 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840059</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419935&view=findpost&p=3840053'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2020-10-06T14:02:46+00:00">06.10.20, 14:02</time></span><div class='quote '>Ты уверен, что тебе нужны именно сочетания, а не размещения?</div></div><br>
Ты прав, порядок важен&#33; Да - нужны размещения&#33; <span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>Правлю название темы</strong></span>.<br>
<br>
<span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Ниже схемка - это так, для памяти</strong></span>  :) <br>
<br>
<img class='tag-img' src='https://i114.fastpic.ru/big/2020/1006/e4/085554467111c4038ce2e6c6b28238e4.png' alt='user posted image'>]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840053</guid>
        <pubDate>Tue, 06 Oct 2020 14:02:46 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3840053</link>
        <description><![CDATA[OpenGL: Ты уверен, что тебе нужны именно сочетания, а не размещения?<br>
Сочетания из n элементов по k с использованием next_permutation получаются при помощи создания вектора из (n - k) нулей и k единиц, т.е. вектора длины n. А дальше как-то так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">do</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// v[i] == 1 означает, что i-ый элемент принадлежит сочетанию</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">} while(std::next_permutation(v.begin(), v.end());</div></ol></div></div></div></div><br>
Если будут нужны размещения, то просто каждое из полученных сочетаний сортируешь и генерируешь все возможные их перестановки. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-10-06T14:11:34+00:00">06.10.20, 14:11</time></span></span><br>
Или с размещениями лучше вообще вот так. Генерируешь вектор значений ((n - k) нулей, 1, 2, 3, ... k), и переставляешь уже его. На каждой итерации полагаешь, что если v[i] == 0, то i-ый элемент в размещение не входит, иначе он находится на v[i]-ой позиции.]]></description>
        <author>OpenGL</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3839990</guid>
        <pubDate>Tue, 06 Oct 2020 09:57:25 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3839990</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419935&view=findpost&p=3839988'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2020-10-06T09:36:24+00:00">06.10.20, 09:36</time></span><div class='quote '>Что такое сочетания ? И чем не подходит std::next_permutation?</div></div><br>
Тем, что оно делает перестановки. <s class='tag-s'>А <a class='tag-url' href='https://ru.wikipedia.org/wiki/Сочетание' target='_blank'>сочетание</a> - это немного другое.<br>
</s> упс, нужны <a class='tag-url' href='https://ru.wikipedia.org/wiki/Размещение' target='_blank'>размещения</a>. :whistle: <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419935&view=findpost&p=3839988'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2020-10-06T09:36:24+00:00">06.10.20, 09:36</time></span><div class='quote '>Оно же делает перестановки.</div></div><br>
Да. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-10-06T10:00:45+00:00">06.10.20, 10:00</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=419935&view=findpost&p=3839988'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2020-10-06T09:36:24+00:00">06.10.20, 09:36</time></span><div class='quote '>А вообще брутфорс по словарю</div></div><br>
Брутфорс - это подбор путем перебора (без уточнения, как именно перебирается). Словарь может быть из готовых паролей, а может быть из алфавита, с помощью которого методом сочетаний формируются пароли.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3839988</guid>
        <pubDate>Tue, 06 Oct 2020 09:36:24 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3839988</link>
        <description><![CDATA[Wound: Что такое сочетания ? И чем не подходит std::next_permutation?<br>Оно же делает перестановки.<br><br>А вообще брутфорс по словарю - это когда ты берешь словарь и начинаешь его перебирать, без всяких перестановок.]]></description>
        <author>Wound</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3839982</guid>
        <pubDate>Tue, 06 Oct 2020 08:22:51 +0000</pubDate>
        <title>Генерация размещений</title>
        <link>https://forum.sources.ru/index.php?showtopic=419935&amp;view=findpost&amp;p=3839982</link>
        <description><![CDATA[JoeUser: Всем привет&#33;<br>
<br>
В стандартной либе (&lt;algorithm&gt;) есть прекрасный механизм работы с перестановками - <a class='tag-url' href='https://en.cppreference.com/w/cpp/algorithm/next_permutation' target='_blank'>std::next_permutation</a>.<br>
А есть ли что-либо подобное, удобное для работы с размещениями? <br>
<br>
Допустим, к примеру, я хочу реализовать брутфорс по словарю. <br>
И мне нужно из словаря размером D сгенирировать все размещения длинной от M до N, где M&gt;0 и N&gt;=M.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	