Revision 7749b550-b51e-4687-94a2-9d457dbeea5a - Code Golf Stack Exchange
# [05AB1E](https://github.com/Adriandmen/05AB1E/wiki/Commands), 17 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage)
<sup>12 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage) if trailing whitespaces were allowed: [try it online](https://tio.run/##yy9OTMpM/f//3LZzW40O7zq81svv8K7g2nPbvP4f2v0/OlqpQElHqQiI84E4HcpOBOJcKM4E4jywXKwORHUpEFdBcQ4QpwJxMVg2Eao2BcxLhpqaAlYDEkmHioB0pSnFxgIA).</sup>
ζε2úíJNúS}ζJðδÜõÜ
Port of [*@Shaggy*'s Japt answer](https://codegolf.stackexchange.com/a/167536/52210).
Input as a list of list of characters; output as a list of lines.
[Try it online.](https://tio.run/##yy9OTMpM/f//3LZzW40O7zq81svv8K7g2nPbvA5vOLfl8JzDWw/P@X9o9//oaKUCJR2lIiDOB@J0KDsRiHOhOBOI88BysToQ1aVAXAXFOUCcCsTFYNlEqNoUMC8ZamoKWA1IJB0qAtKVphQbCwA)
**More interesting answer using the Canvas builtin (<s>27</s> 25 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage)):**
<sup><s>20</s> 19 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage) if trailing whitespaces were allowed: [try it online](https://tio.run/##yy9OTMpM/f//UdOadJfDO0z0Du89PccTyDu8@/CGQ7sO7zU2Nwk@N/v//2ilgqL89KLE3NzMvHQlHaWC0qqqnNRiICsxLwVIJuenpAKp9PycNKVYAA).</sup>
€gDø4.ý˜I€ûðºý374S.Λ¶¡ðδÜ
-2 bytes thanks to *@emanresuA*.
Input as a list of words; output as a list of lines.
[Try it online.](https://tio.run/##yy9OTMpM/f//UdOadJfDO0z0Du89PccTyDu8@/CGQ7sO7zU2NwnWOzf70LZDCw9vOLfl8Jz/h3b/j1YqKMpPL0rMzc3MS1fSUSoorarKSS0GshLzUoBkcn5KKpBKz89JU4oFAA)
**Explanation:**
<!-- language-all: lang-python -->
ζ # Zip/transpose; swapping rows/columns of the (implicit) input-list of lists
# of characters, with a space " " as filler for shorter lists
ε # Map over each inner lists of characters:
2ú # Pad each inner character with 2 leading spaces
í # Reverse each inner string, so the spaces are trailing
J # Join this list together to a single string
Nú # Pad the 0-based map-index amount of leading spaces
S # Convert the string back to a list of characters
}ζ # After the map: Zip/transpose back again with " " filler
J # Join each inner list together to a single string
δ # Map over each inner line:
ð Ü # Trim trailing spaces
õÜ # Trim trailing empty strings from the list
# (after which the list of lines is output implicitly)
<!-- -->
€gDø4.ý˜I€ûðºý374S.Λ¶¡ðδÜ
€g # Get the length of each word of the (implicit) input-list
Dø # Convert each value to a pair of this value with a Duplicate + Zip/transpose
4.ý # Intersperse this list of pairs with 4 as delimiter
˜ # Flatten it to a single list
I # Push the input-list of words again
€û # Palindromize each word
ðºý # Join this list with " " (2 spaces) delimiter
ŽDā # Push 374
S # Convert it to a list of digits: [3,7,4]
.Λ # Use the modifiable Canvas builtin with these three arguments
¶¡ # Split it on newlines
δ # Map over each inner line:
ð Ü # Trim trailing spaces
# (after which the list of lines is output implicitly)
*Additional information about the Canvas builtin `Λ`/`.Λ`:*
It takes 3 arguments to draw an ASCII shape:
1. Length of the lines we want to draw
2. Character/string to draw
3. The direction to draw in, where each digit represents a certain direction:
<!-- -->
7 0 1
↖ ↑ ↗
6 ← X → 2
↙ ↓ ↘
5 4 3
`€gDø4.ý˜I€ûðºý374S` creates the following Canvas arguments:
- Lengths (`€gDø4.ý˜`): e.g. `[11,11,4,7,7,4,3,3,4,4,4,4,4,4]` for input `["programming","puzzles","and","code","golf"]`
- Characters (`I€ûðºý`): e.g. `"programmingnimmargorp puzzleselzzup andna codedoc golflog"` for input `["programming","puzzles","and","code","golf"]`
- Directions (`374S`): `[3,7,4]`, which translates to \$[↘,↖,↓]\$
Because we have a list of lengths, those are leading here.
Step 1: Draw 11 characters (`"programming"`) in direction `3` (\$↘\$):
p
r
o
g
r
a
m
m
i
n
g
Step 2: Draw 11-1 characters (`"nimmargorp"`) in direction `7` (\$↖\$):
p
r
o
g
r
a
m
m
i
n
g
Step 3: Draw 4-1 characters (`" p"`) in direction `4` (\$↓\$):
p
r
p o
g
r
a
m
m
i
n
g
Step 4: Draw 7-1 characters (`"uzzles"`) in direction `3` (\$↘\$):
p
r
p o
u g
z r
z a
l m
e m
s i
n
g
etc.
[See this 05AB1E tip of mine for an in-depth explanation of the Canvas builtin.](https://codegolf.stackexchange.com/a/175520/52210)
`€gDø4.ý˜` could alternatively be [`εgD4)}˜¨` or `€gDø€4¦˜`](https://tio.run/##yy9OTMpM/f//UdOadJfDO0z0Du89PYdTh@vc1nQXE83a03MOrQDyoLJAyuTQMpD8///RSgVF@elFibm5mXnpSjpKBaVVVTmpxUBWYl4KkEzOT0kFUun5OWlKsQA), but I've been unable to find anything shorter.