dancing bull pricing structure
By traviscj
- 4 minutes read - 664 wordsDancing Bull is a great Korean BBQ restaurant that opened nearby recently. They have this pricing scheme:
Note that the unlimited bulgogi is \$23/person, but the bulgogi a la carte is \$25/grill (with each additional orders after that costing \$9). This raises an obvious question: which is the better deal?
Spoiler: it depends on both how many people you have and how hungry they are.
First, we had to clarify how it actually worked. It’s not clear from the menu, but the “\$25/grill” includes the first order of bulgogi. Introducing $P$ for the number of people, $G$ for the number of grills, and $O$ for the total number of orders, we would pay $$UL = 23\cdot P$$ for the unlimited price scheme vs $$ALC = 25\cdot G + 9\cdot ( O - G)$$ for the a la carte scheme.
Let’s take an example: If we have $P=4$ people eating $O=6$ orders of bulgogi (with a single grill), we can pay:
- unlimited: $23\cdot 4 = 92$ dollars (\$23 per person)
- a la carte: $25\cdot 1 + 9\cdot5 = 61$ dollars (\$15.25 per person)
We’re interested in finding the breakeven number of orders, where the a la carte order costs more than the unlimited order. If we’re feeling less hungry than that breakeven value, we should just order a la carte.
To actually find it, we seek an $O$ that satisfies $ALC = UL$, so $$ALC = UL \implies 25\cdot G + 9\cdot ( O - G) = 23\cdot P \implies O = { {(23\cdot P - 25 \cdot G)} \over 9} + G$$
This is trivial to express in python:
def breakeven_orders(people, grills):
"""
grills such that unlimited == a_la_carte
23*p == 25*g + 9*(total_orders - grills)
"""
return (23.*people - 25.*grills) / 9. + grills
and we can use that function to make a table for ourselves:
--------------------------------------------------------------------------------
breakeven orders (orders-per-person) for (#grills, # people)
G=1 G=2 G=3 G=4
P=1 >0 (>0.78) * * *
P=2 >3 (>1.67) >1 (>0.78) * *
P=3 >5 (>1.96) >4 (>1.37) >2 (>0.78) *
P=4 >8 (>2.11) >6 (>1.67) >4 (>1.22) >3 (>0.78)
P=5 >11 (>2.20) >9 (>1.84) >7 (>1.49) >5 (>1.13)
P=6 >13 (>2.26) >11 (>1.96) >10 (>1.67) >8 (>1.37)
P=7 >16 (>2.30) >14 (>2.05) >12 (>1.79) >10 (>1.54)
P=8 >18 (>2.33) >16 (>2.11) >15 (>1.89) >13 (>1.67)
P=9 >21 (>2.36) >19 (>2.16) >17 (>1.96) >15 (>1.77)
P=10 >23 (>2.38) >22 (>2.20) >20 (>2.02) >18 (>1.84)
P=11 >26 (>2.39) >24 (>2.23) >22 (>2.07) >21 (>1.91)
P=12 >28 (>2.41) >27 (>2.26) >25 (>2.11) >23 (>1.96)
P=13 >31 (>2.42) >29 (>2.28) >27 (>2.15) >26 (>2.01)
P=14 >34 (>2.43) >32 (>2.30) >30 (>2.17) >28 (>2.05)
P=15 >36 (>2.44) >34 (>2.32) >33 (>2.20) >31 (>2.08)
P=16 >39 (>2.44) >37 (>2.33) >35 (>2.22) >33 (>2.11)
- “>X (>Y)” indicates unlimited is cheaper for >X total orders (>Y orders-per-person)
- Extra grills = faster ingestion!
- Not sure how many grills unlimited usually comes with. Probably 1 grill/4 people?
notes & questions
- I went with 4 friends and ended up getting 7 orders of bulgogi.
- I went with 6 friends and ended up getting (I think?) 9 orders of bulgogi (with 2 grills for speed).
- It amazes me how much I didn’t (and still don’t!) want to do the initial \$25 grill order, even though it’s just the constant term and saves money in the long run.
- Pricing one scheme in terms of grills and another in terms of people feels like a dirty trick, even through it’s clear why they’re doing that. It makes it much harder to compare sanely with mental/napkin math: it tricks you into thinking a la carte costs more, even though you’re not going to buy as many of them.
- I find the previous point extremely hard to reconcile with the presence of a \$9 additional order. Why does the brain want to skip over that part?
- An earlier version of this post incorrectly calculated the example $ALC$ value, having used $P-G$ instead of $O-G$. Thanks for pointing it out, Lauren!