4 edited body
source | link

Haskell, 84 83 8367 bytes

z=zipWith
e=[]:e
f l=foldr1l=foldr(z$z\_->z(z(+))$scanr(\_->foldrl.foldr(zipWithz(:))e.map reverse)l"abc"e)l"123"

Try it online!Try it online!

Thanks to Laikoni and totallyhuman for saving 1 bytea lot of bytes!

Haskell, 84 83 bytes

z=zipWith
e=[]:e
f l=foldr1(z$z(+))$scanr(\_->foldr(zipWith(:))e.map reverse)l"abc"

Try it online!

Thanks to totallyhuman for saving 1 byte!

Haskell, 84 83 67 bytes

z=zipWith
e=[]:e
f l=foldr(\_->z(z(+))l.foldr(z(:).reverse)e)l"123"

Try it online!

Thanks to Laikoni and totallyhuman for saving a lot of bytes!

3 edited body
source | link

Haskell, 84 83 bytes

z=zipWith
e=[]:e
f l=foldr1(z$z(+))$scanr(\_->foldr(zipWith(:))e.map reverse)l"abc"

Try it online!

Thanks to totallyhuman for davingsaving 1 byte!

Haskell, 84 83 bytes

z=zipWith
e=[]:e
f l=foldr1(z$z(+))$scanr(\_->foldr(zipWith(:))e.map reverse)l"abc"

Try it online!

Thanks to totallyhuman for daving 1 byte!

Haskell, 84 83 bytes

z=zipWith
e=[]:e
f l=foldr1(z$z(+))$scanr(\_->foldr(zipWith(:))e.map reverse)l"abc"

Try it online!

Thanks to totallyhuman for saving 1 byte!

2 added 106 characters in body
source | link

Haskell, 8484 83 bytes

import Data.List
z=zipWith
e=[]:e
f l=foldr1(z$z(+))$scanr(\_->transpose>foldr(zipWith(:))e.map reverse)l"abc"

Try it online!Try it online!

Thanks to totallyhuman for daving 1 byte!

Haskell, 84 bytes

import Data.List
z=zipWith
f l=foldr1(z$z(+))$scanr(\_->transpose.map reverse)l"abc"

Try it online!

Haskell, 84 83 bytes

z=zipWith
e=[]:e
f l=foldr1(z$z(+))$scanr(\_->foldr(zipWith(:))e.map reverse)l"abc"

Try it online!

Thanks to totallyhuman for daving 1 byte!

1
source | link