pb (НЕКОМПЕТНІ), 125 байт
^w[B!0]{>}w[B!45]{<w[B=10]{t[T+1]b[0]}}v[X]vw[T!0]{vb[124]<[X]b[124]>w[B=0]{>}t[T-1]}w[X!1]{<b[95]}<w[B!0]{^}w[Y!-1]{b[47]>^}
Версія pbi, що вам потрібно виконати цю відповідь, новіша, ніж питання. Він би працював у більш старих версіях, за винятком того, що я ніколи не заважав дозволити введення нових рядків Ну добре.
По-перше, це визначає висоту поля, рахуючи нові рядки на вході. Як тільки це знає, він прямує до місця Y у правій частині коробки, спускається туди, де це має бути, і малює стіни та підлогу, закінчуючи кришкою.
Перевірте цю веселу анімацію!
Довга пауза - кисть, що йде над входом.
Безголівки:
^w[B!0]{>} # Go to the end of the input
w[B!45]{< # Head left until hitting a hyphen
w[B=10]{ # For each newline on the way:
t[T+1] # Count it
b[0] # Delete it
}
}
v[X] # Move down as far as it is right + the number of \n
v # ...plus one
w[T!0]{ # While the counting variable is nonzero:
vb[124] # Go down and draw a pipe
<[X]b[124] # Draw a pipe on the left as well
>w[B=0]{>} # Go back to the right side
t[T-1] # Decrement variable
}
w[X!1]{<b[95]} # Draw the bottom of the box
<w[B!0]{^} # Go up the left wall
w[Y!-1]{b[47]>^} # Go up and right, drawing the lid