flatten [] = []
flatten [y] = y
flatten ([]:xs) = flatten xs
flatten (y:[]:xs) = flatten $ y:xs
flatten ([y]:(yy:ys):xs) = y : (y + yy)/2 : flatten ((yy:ys):xs)
flatten ((y:ys):zs:xs) = y : flatten (ys:zs:xs)
main = do
let ls = [[1, 2, 3, 4, 5], [6, 5, 4, 3], [-3, -3, -3]]
let fs = flatten ls
ZmxhdHRlbiA6OiBbW0Zsb2F0XV0gLT4gW0Zsb2F0XQpmbGF0dGVuIFtdID0gW10KZmxhdHRlbiBbeV0gPSB5CmZsYXR0ZW4gKFtdOnhzKSA9IGZsYXR0ZW4geHMKZmxhdHRlbiAoeTpbXTp4cykgPSBmbGF0dGVuICQgeTp4cwpmbGF0dGVuIChbeV06KHl5OnlzKTp4cykgPSB5IDogKHkgKyB5eSkvMiA6IGZsYXR0ZW4gKCh5eTp5cyk6eHMpCmZsYXR0ZW4gKCh5OnlzKTp6czp4cykgPSB5IDogZmxhdHRlbiAoeXM6enM6eHMpCgptYWluID0gZG8KICBsZXQgbHMgPSBbWzEsIDIsIDMsIDQsIDVdLCBbNiwgNSwgNCwgM10sIFstMywgIC0zLCAtM11dCiAgcHJpbnQgbHMKICBsZXQgZnMgPSBmbGF0dGVuIGxzCiAgcHJpbnQgZnM=
[[1.0,2.0,3.0,4.0,5.0],[6.0,5.0,4.0,3.0],[-3.0,-3.0,-3.0]]
[1.0,2.0,3.0,4.0,5.0,5.5,6.0,5.0,4.0,3.0,0.0,-3.0,-3.0,-3.0]