Printing criss cross of two strings
Jelly, 10 8 bytes
żṚj@¥2\U
Try it online!
How it works
żṚj@¥2\U Main link. Arguments: s, t (strings)
Arguments: "Truck", Tower"
ż Ziphwith; create all pairs of corresponding characters.
Return value: ["TT", "ro", "uw", "ce", "kr"].
2\ Reduce each pair of adjacent strings by the quicklink to the left.
¥ Combine the two links to the left into a dyadic chain.
Ṛ Reverse the left string.
j@ Join the second string, using the previous result as separator.
Map: "TT", "ro" -> join("ro", "TT") -> "rTTo"
"ro", "uw" -> join("uw", "or") -> "uorw"
etc.
Return value: ["rTTo", "uorw", "cwue", "kecr"]
U Upend; reverse each string.
Return value: ["oTTr", "wrou", "euwc", "rcek"]
(implicit) Flatten and print.
JavaScript (ES6), 51 bytes
f=([G,...O],[L,...F])=>O[0]?F[0]+G+L+O[0]+f(O,F):''
f=([G,...O],[L,...F])=>O[0]?F[0]+G+L+O[0]+f(O,F):''
console.log(f("Truck", "Tower"))
Haskell, 44 38 bytes
Crossed out 44 is still 44
[_]#_=""
(a:b)#(x:y)=y!!0:a:x:b!!0:b#y
Slightly less golfed / maybe a little more readable:
[_] # [_] = ""
(a:b:bs) # (x:y:ys) = y:a:x:b:((b:bs) # (y:ys))