Namaran

Code daily. Without assist.

2026-09-16

MovingSums.hs

movingSums :: [Int] -> [Int]
-- write this: sum of each element and its successor,
-- e.g. [1,2,3,4,5] -> [3,5,7,9]

movingSumszipWithを1回使って書いてください。xsを明示的にインデックスで辿らないこと。

Reference
movingSums :: [Int] -> [Int]
movingSums xs = zipWith (+) xs (drop 1 xs)

xsと、それを1つ後ろへずらしたdrop 1 xszipWith (+)で組み合わせると、i番目の結果はxs !! ixs !! (i+1)の和になります。zipWithは短い方のリストに合わせて止まるので、最後の要素には対応する「次の要素」がなく、自然に結果は元より1つ短くなります。これは参考実装であり、唯一の正解ではありません。