菜鸟教程小白 发表于 2022-12-13 05:30:26

ios - 不同 NSArray 对象的组合


                                            <p><p>我想在不同的 <code>arrays</code> 中找到 <code>elements</code> 的组合。假设我有三个 <code>NSArray</code> 对象:</p>

<pre><code>NSArray *set1 = ;
NSArray *set2 = ;
NSArray *set3 = ;
</code></pre>

<p>现在需要的答案是以下数组</p>

<pre><code>NSArray *combinations = [{A},{B},{C},{a},{b},{1},{A,a},{A,b},{A,1},{B,a},{B,b},{B,1},{a,1},{b,1},{A,a,1},{A,b,1},{B,a,1},{B,b,1},{C,a,1},{C,b,1}];
</code></pre>

<p><strong>编辑</strong>
目前我已经做了以下代码,我能够得到两个长度的组合。</p>

<pre><code>    NSArray *set1 = ;
    NSArray *set2 = ;
    NSArray *set3 = ;

    NSArray *allSets = ;
    NSMutableArray *combinations = ;

    for (int index = 0; index &lt; allSets.count; index++) {
      ];
    }

    NSMutableArray *singleCombinations = combinations;

    for (NSArray *set in allSets) {
      ;
    }

    for (int outerIndex = 0; outerIndex &lt; allSets.count-1; outerIndex++) {

      NSArray *set = allSets;

      for (id object1 in set) {

            for (int innerIndex = outerIndex+1; innerIndex&lt;allSets.count; innerIndex++) {
                NSArray *nextSet = allSets;

                for (id object2 in nextSet) {
                  NSString *combi = ;
                  NSLog(@&#34;%@&#34;,combi);
                }

            }

      }

    }
</code></pre>

<p>有什么帮助???</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>使用以下函数,它追加
<code>a2</code> 的所有元素到 <code>a1</code> 的每个元素:</p>

<pre><code>NSArray *combinations(NSArray *a1, NSArray *a2)
{
    NSMutableArray *result = ;
    for (NSArray *elem1 in a1) {
      ;
      for (id elem2 in a2) {
            ];
      }
    }
    return result;
}
</code></pre>

<p>你可以从一个空数组开始迭代得到结果,然后
将其与您的套装相结合:</p>

<pre><code>NSArray *set1 = @[@&#34;A&#34;, @&#34;B&#34;, @&#34;C&#34;];
NSArray *set2 = @[@&#34;a&#34;, @&#34;b&#34;];
NSArray *set3 = @[@&#34;1&#34;];

NSArray *result = @[@[]];
result = combinations(result, set1);
result = combinations(result, set2);
result = combinations(result, set3);
</code></pre>

<p>显示结果:</p>

<pre><code>for (NSArray *item in result) {
    NSLog(@&#34;{ %@ }&#34;, );
}
</code></pre>

<p>输出</p>

<pre>{ }
{ 1 }
{ 一个 }
{一个,1}
{乙}
{ b, 1 }
{ 一个 }
{一,1}
{一个,一个}
{ 一个,一个,1 }
{一,乙}
{ A, b, 1 }
{乙}
{乙,1}
{乙,一个}
{ 乙, 一, 1 }
{乙,乙}
{ 乙,乙,1 }
{ C }
{ C, 1 }
{ C, 一个 }
{ C, 一, 1 }
{ C, b }
{ C, b, 1 }
</pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 不同 NSArray 对象的组合,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20048824/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20048824/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 不同 NSArray 对象的组合