def scanl(f, acc, arr):
if arr:
x, xt = arr[0], arr[1:]
return acc + scanl(f, f(acc, x), xt)
else:
return acc
init = [0]
def step(acc, x):
tmp = x[acc[-1]]
return [acc[-1] + 1] if tmp else [0]
m = [
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0],
[1, 0, 1, 0, 0, 0],
]
print(scanl(step, init, m))