ペアに分ける

  • いかにも、どこかにアルゴリズムがありそうだが見つからないので作る
  • 偶数kにつき、(1,2,...,k)をk/2ペアに分けるわけ方を列挙する
  • 作戦としては、k個から2つを取り出す場合を列挙、ついでk-2個から2つを取り出す場合を列挙、、、繰り返す
  • そうすると重複して列挙されるので、ユニークを取る
  • ペアのユニーク確認のために、数ラベルペアを文字列化して、そのユニーク確認をし、文字列になったものを数字に戻す

  • 第1,2列がペア、第3,4列がペア、…、第2n-1, 2n列がペア
> my.all.pairs(2)
     [,1] [,2]
[1,]    1    2
> my.all.pairs(4)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    1    3    2    4
[3,]    1    4    2    3
> my.all.pairs(6)
      [,1] [,2] [,3] [,4] [,5] [,6]
 [1,]    1    2    3    4    5    6
 [2,]    1    3    2    4    5    6
 [3,]    1    4    2    3    5    6
 [4,]    1    5    2    3    4    6
 [5,]    1    6    2    3    4    5
 [6,]    1    3    2    5    4    6
 [7,]    1    3    2    6    4    5
 [8,]    1    2    3    5    4    6
 [9,]    1    2    3    6    4    5
[10,]    1    4    2    5    3    6
[11,]    1    5    2    4    3    6
[12,]    1    6    2    4    3    5
[13,]    1    4    2    6    3    5
[14,]    1    5    2    6    3    4
[15,]    1    6    2    5    3    4