Charcoal, (削除) 64 (削除ここまで) 62 bytes
WS⊞υι≔Eθ⪫⪪⭆υ§λκ-|¦#|θFθFΦ⪪ι#λ«P↓Noκ|→→»←⸿⸿FEυ⌕A⭆θ§λκ#Wι«⊕−⊟ι⊟ι→
Try it online! Link is to verbose version of code. Takes input as a rectangular list of newline-terminated strings. Explanation:
WS⊞υι
Input the stack of tables.
≔Eθ⪫⪪⭆υ§λκ-|¦#|θ
Transpose the stack and identify the ends of the tabletops i.e. those parts above the legs.
FθFΦ⪪ι#λ«
For each column of the original stack split it on tabletop ends, dropping the first element (which is the space above the first end) and loop over the resulting legs.
P↓Noκ|→→
Print the length of the leg vertically (which Charcoal automatically translates into a line of |s) without moving the cursor and then allow two columns for the next leg.
»←⸿⸿
Move up to the start of the previous row but one.
FEυ⌕A⭆θ§λκ#
Transpose the stack back and find all of the tabletop ends.
Wι«⊕−⊟ι⊟ι→
Loop over the ends in pairs, print the inclusive difference between each pair (which Charcoal automatically translates into a line of -s) and then allow a column for the next tabletop.
- 184.4k
- 12
- 76
- 290