07/01/28 21:35:53
本スレのほうから誘導されましたので、こちらで質問させていただきます。
スレリンク(tech板:548-557番)
(したいこと)
Arrayの要素の組合せを全て作った Arrayを返す。
(サンプル)
仮に combinations というメソッド名として
[].combinations => []
[1].combinations => [[[1]]]
[1,2].combinations => [
[[1],[2]], # 1個ずつの組み合わせ
[[1,2]], # 2個ずつの組み合わせ
]
[1,2,3].combinations => [
[[1],[2],[3]], # 1個ずつの組み合わせ
[[1,2],[3]], # 2個ずつの組み合わせ
[[1],[2,3]], # 2個ずつの組み合わせ
[[1,2,3]], # 3個ずつの組み合わせ
]
[1,2,3,4].combinations => [
[[1],[2],[3],[4]], # 1個ずつの組み合わせ
[[1,2],[3],[4]], # 2個ずつの組み合わせ
[[1],[2,3],[4]], # 2個ずつの組み合わせ
[[1],[2],[3,4]], # 2個ずつの組み合わせ
[[1,2],[3,4]], # 2個ずつの組み合わせ
[[1,2,3],[4]], # 3個ずつの組み合わせ
[[1],[2,3,4]], # 3個ずつの組み合わせ
[[1,2,3,4]], # 4個ずつの組み合わせ
]
実装は、メソッドの再帰を行うんだろうとはなんとなく分かるんですが、それ以上は進まず。