Rubyについて Part 25 (気にしてますか?GPL混入

このエントリーをはてなブックマークに追加
548デフォルトの名無しさん
誰か、私のしたいことをかなえてください。

(したいこと)
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個ずつの組み合わせ
]
実装は、メソッドの再帰を行うんだろうとはなんとなく分かるんですが、それ以上は進まず。
誰かかなえて下さい。
549デフォルトの名無しさん:2007/01/22(月) 17:46:10
Pythonは全てオブジェクトなのに
非OOPL的な書き方をするイメージがある
550デフォルトの名無しさん:2007/01/22(月) 17:52:55
>>548
permutation ruby
551デフォルトの名無しさん:2007/01/22(月) 19:28:09
>>549
kwsk
552541:2007/01/22(月) 20:10:26
>>546
Fixnumはimmutableだからじゃないかなぁ。

>>543-544
解説ありがとう。
553デフォルトの名無しさん:2007/01/22(月) 21:16:02
「純OOPLの清きに魚も住みかねて もとの濁りのruby恋しき」

ruby === (acceptable lisp)

ってことでいいよ。
554デフォルトの名無しさん:2007/01/22(月) 22:49:26
>>ssd-san
>>513はCPyとCRの比較でJRじゃないっす
555デフォルトの名無しさん:2007/01/22(月) 22:51:20
>>552
確かにimmutableは汚染されていないとみなされるらしい。
s = :a
p s.tainted? # false
s.taint
p s.tainted? # false
しかし、セキュリティモデルとしてどうだろう?「信頼できない入力から作られた
オブジェクトは汚染されている」というモデルに矛盾するんじゃない?
556デフォルトの名無しさん:2007/01/22(月) 22:58:23
immutableだからではなくて実装上の都合では?
r = /foo/
p r.tainted? # false
r.taint
p r.tainted? # true
557デフォルトの名無しさん:2007/01/22(月) 23:05:05
>>548
だから宿題は、(ry

RUBYの宿題教えてください。
http://pc10.2ch.net/test/read.cgi/tech/1106572657/