pb (NONCOMPETING), 125 bayt
^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]>^}
Bu cevabı çalıştırmanız gereken pbi sürümü, sorudan daha yeni. Girdide yeni satırlara izin vermek için hiç uğraşmamam dışında, eski sürümlerde işe yarayacaktı. Oh iyi.
İlk olarak, bu girdideki yeni satırları sayarak kutunun yüksekliğini belirler. Bunu bir kez öğrendiğinde, kutunun sağ tarafının Y konumuna gider, olması gereken yere iner ve duvarları ve zemini çizerek kapakla bitirir.
Bu eğlenceli animasyona göz atın!
Uzun duraklama, girişin üzerinden geçen fırçadır.
Ungolfed:
^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