Rubyについて Part 25 (気にしてますか?GPL混入
誰か、私のしたいことをかなえてください。
(したいこと)
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個ずつの組み合わせ
]
実装は、メソッドの再帰を行うんだろうとはなんとなく分かるんですが、それ以上は進まず。
誰かかなえて下さい。
Pythonは全てオブジェクトなのに
非OOPL的な書き方をするイメージがある
552 :
541:2007/01/22(月) 20:10:26
「純OOPLの清きに魚も住みかねて もとの濁りのruby恋しき」
ruby === (acceptable lisp)
ってことでいいよ。
>>ssd-san
>>513はCPyとCRの比較でJRじゃないっす
>>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