校内写生って漫画があったなぁと
#make_comb([1,3,4],2) → [1,3],[1,4],[3,4] #make_comb([1,2,3,4],2)→[1,2],[1,3],[1,4]・・ #make_commb([1,2,3,4,5],3)→[1,2,3]・・[2,4,5] def make_comb(array,num) # [2,3] → [[2][3]] # result ||= [] if num == 1 array.each do |elem| result << [elem] end end # 2 [3,4,5]→[3,4],[3,5],[4,5] _size = array.size array.each_with_index do |elem,i| make_comb(array[i+1.._size],num-1).each do |rest_comb_array| #p elem,rest_comb_array result << [elem] + rest_comb_array #[[2,3,4] << [2] +[3,4] end end result end p make_comb([2,3],1) p make_comb([2,3,4],2) p make_comb([3,4,5,6],3) p make_comb([2,3,4,5,6],3).size #10
昔5,6時間書くのに(カクのにではない)かかったので、再度挑戦、配列を取り出すプログラム
20分ぐらいかな?
適当に書いたので、今度書いたら(カイたらではない)何分かかるかは風のみぞ知る。