HaskellとPythonで階差数列
Haskell版
Prelude> let diff ls = zipWith (-) (tail ls) ls Prelude> diff [1,2,3,4,5] [1,1,1,1] Prelude> diff [x^2 + x -1 | x <- [0..10]] [2,4,6,8,10,12,14,16,18,20]
Python版
>>> f = lambda a, b: a-b >>> diff = lambda ls: map(f, ls[1:], ls) >>> ls1 = diff([1,2,3,4,5]) >>> list(ls1) [1, 1, 1, 1] >>> ls2 = diff([x*x + x -1 for x in range(11)]) >>> list(ls2) [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
応用で、数列が単調増加(減少)しているか、とかも割りと簡潔に書ける。
で、そういえば、階差数列っていつ役に立つの?