以下のアルゴリズム/アルゴリズムトリックの一般的な名前を探しています。
xs = [0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1]
ys = [xs[0]]
for i in range(1, len(xs)):
if xs[i] == 1:
ys.append(ys[i - 1] + 1)
else:
ys.append(ys[i - 1])
print ys
# prints: [0, 1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5]
つまり、 のあるインデックスで見られる 1 の数を累積しxs
ます。また、これを行うためのより簡潔な方法はありますか? Scala、Python、Haskell の回答は大歓迎です。