89100

[code]

    arr = [1,2,3,4,5]
    
[/code]  
  
このような配列を

[code]

    [1,2,3],[4,5]
    [1],[2,3,4,5]
    [1,2],[3,4,5]
    [3,4],[1,2,5]
    
[/code]

というように2個の配列に分割したうえでの全ての組み合わせを検討したいです。

[code]

    arr.permutationで行列を計算し、each_slice(2) #arr.sizeが奇数ならば+1
    
[/code]

等を試してみましたが、上手くできませんでしたので知見をいただきたいです。


CC BY-SA 4.0
2022-05-28T04:16:06.287
89098
2022-05-28T05:34:48.917
52832
question
ruby アルゴリズム
Ruby 要素がn個の配列を2つに分ける全ての組み合わせ

[code]

    irb> (1..arr.length/2).map{|i| arr.combination(i).map{|j| [j, arr - j]}}.flatten(1)
    => 
    [[[1], [2, 3, 4, 5]],                                      
     [[2], [1, 3, 4, 5]],                                      
     [[3], [1, 2, 4, 5]],                                      
     [[4], [1, 2, 3, 5]],                                      
     [[5], [1, 2, 3, 4]],                                      
     [[1, 2], [3, 4, 5]],                                      
     [[1, 3], [2, 4, 5]],                                      
     [[1, 4], [2, 3, 5]],                                      
     [[1, 5], [2, 3, 4]],                                      
     [[2, 3], [1, 4, 5]],                                      
     [[2, 4], [1, 3, 5]],                                      
     [[2, 5], [1, 3, 4]],
     [[3, 4], [1, 2, 5]],
     [[3, 5], [1, 2, 4]],
     [[4, 5], [1, 2, 3]]]
    
[/code]


CC BY-SA 4.0
2022-05-28T05:34:48.917
89100
2022-05-28T05:34:48.917
47127
89098
answer