pb (NONCOMPETING), 125 byte
^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]>^}
Versi pbi yang perlu Anda jalankan jawaban ini lebih baru dari pertanyaan. Itu akan bekerja di versi yang lebih lama kecuali bahwa saya tidak pernah sempat membiarkan baris baru dalam input. Baiklah.
Pertama, ini menentukan ketinggian kotak dengan menghitung baris baru di input. Setelah mengetahui hal itu, ia pergi ke lokasi Y di sisi kanan kotak, turun ke tempat yang seharusnya dan menggambar dinding dan lantai, diakhiri dengan tutupnya.
Lihat animasi yang asyik ini!
Jeda panjang adalah sikat memeriksa input.
Tidak Disatukan:
^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