2011-12-26
■[Haskell][F#][Ruby]等差数列
目標
配列の隣接する2項にそれぞれ演算を施した配列を得たい。つまり、
f (+) [1,2,3,4,5] = [3,5,7,9]
のような f が欲しい。
結果
OCaml はオワコンだった
(こうすればうまく書けるよ、というのがあれば教えてください)
愚直(Haskell)
f g [] = [] f g [_] = [] f g (x:y:zs) = g x y : f g (y:zs)
Haskell
f g x = zipWith g x (tail x)
F#
let uncurry g (a, b) = g a b let f g x = Seq.map (uncurry g) (Seq.pairwise x)
Ruby
keyesberry さんより
def f(x) x.each_cons(2).map{|y,z| yield(y,z)} end
Ruby(無理やり)
def f(x, &b) x[0..-2].zip(x.drop(1)).map { |y, z| b.call(y, z) } end
トラックバック - http://d.hatena.ne.jp/mkut/20111226/1324907006
リンク元
- 34 http://t.co/h7TvzhX2
- 31 http://t.co/j1eyET2Z
- 17 http://t.co/Pv8ngKC3
- 8 http://longurl.org
- 5 http://t.co/FYER1Plu
- 3 http://htn.to/MYM7KW
- 3 http://reader.livedoor.com/reader/
- 3 http://t.co/ElBlA2jc
- 3 http://www.google.co.jp/reader/view/
- 2 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/mkut/20111226/1324907006