The McNuggets Challenge

This is not an eating competition, instead you have to think.

The Challenge

Chicken McNuggets can be ordered in the sizes of 6, 9 and 20 pieces. Being allowed to use a combination of the sizes, what is the highest number that you can NOT order?

Example: 98 pieces can be ordered using a combination (4×20 pieces + 2×9 pieces). 14 pieces cannot be ordered (no combination of 6, 9 and 20 equals 14)

Solution

To solve this we created a small optimisation model that for a proposed number verifies if it is possible to order that quantity.

  • The variables are the number of 6-packs, 9-packs and 20-packs respectively.
  • The objective is to maximise the total number of nuggets ordered.
  • The total number of nuggets ordered is constrained to not be larger than a quantity currently investigated
  • In a loop the program tests order quantities in a decreasing order until the maximum order is not equal the constraint/proposed quantity.

Example Code

Console Output

class TheMcNuggetsChallenge
ojAlgo
2019-05-09

OPTIMAL 100.0 @ { 0, 0, 5 }
OPTIMAL 99.0 @ { 5, 1, 3 }
OPTIMAL 98.0 @ { 0, 2, 4 }
OPTIMAL 97.0 @ { 8, 1, 2 }
OPTIMAL 96.0 @ { 0, 4, 3 }
OPTIMAL 95.0 @ { 1, 1, 4 }
OPTIMAL 94.0 @ { 0, 6, 2 }
OPTIMAL 93.0 @ { 4, 1, 3 }
OPTIMAL 92.0 @ { 2, 0, 4 }
OPTIMAL 91.0 @ { 4, 3, 2 }
OPTIMAL 90.0 @ { 2, 2, 3 }
OPTIMAL 89.0 @ { 0, 1, 4 }
OPTIMAL 88.0 @ { 8, 0, 2 }
OPTIMAL 87.0 @ { 0, 3, 3 }
OPTIMAL 86.0 @ { 1, 0, 4 }
OPTIMAL 85.0 @ { 0, 5, 2 }
OPTIMAL 84.0 @ { 4, 0, 3 }
OPTIMAL 83.0 @ { 0, 7, 1 }
OPTIMAL 82.0 @ { 7, 0, 2 }
OPTIMAL 81.0 @ { 2, 1, 3 }
OPTIMAL 80.0 @ { 0, 0, 4 }
OPTIMAL 79.0 @ { 2, 3, 2 }
OPTIMAL 78.0 @ { 0, 2, 3 }
OPTIMAL 77.0 @ { 8, 1, 1 }
OPTIMAL 76.0 @ { 0, 4, 2 }
OPTIMAL 75.0 @ { 1, 1, 3 }
OPTIMAL 74.0 @ { 0, 6, 1 }
OPTIMAL 73.0 @ { 4, 1, 2 }
OPTIMAL 72.0 @ { 2, 0, 3 }
OPTIMAL 71.0 @ { 4, 3, 1 }
OPTIMAL 70.0 @ { 5, 0, 2 }
OPTIMAL 69.0 @ { 0, 1, 3 }
OPTIMAL 68.0 @ { 5, 2, 1 }
OPTIMAL 67.0 @ { 0, 3, 2 }
OPTIMAL 66.0 @ { 1, 0, 3 }
OPTIMAL 65.0 @ { 0, 5, 1 }
OPTIMAL 64.0 @ { 4, 0, 2 }
OPTIMAL 63.0 @ { 0, 7, 0 }
OPTIMAL 62.0 @ { 7, 0, 1 }
OPTIMAL 61.0 @ { 2, 1, 2 }
OPTIMAL 60.0 @ { 0, 0, 3 }
OPTIMAL 59.0 @ { 2, 3, 1 }
OPTIMAL 58.0 @ { 0, 2, 2 }
OPTIMAL 57.0 @ { 5, 3, 0 }
OPTIMAL 56.0 @ { 0, 4, 1 }
OPTIMAL 55.0 @ { 1, 1, 2 }
OPTIMAL 54.0 @ { 0, 6, 0 }
OPTIMAL 53.0 @ { 4, 1, 1 }
OPTIMAL 52.0 @ { 2, 0, 2 }
OPTIMAL 51.0 @ { 4, 3, 0 }
OPTIMAL 50.0 @ { 5, 0, 1 }
OPTIMAL 49.0 @ { 0, 1, 2 }
OPTIMAL 48.0 @ { 8, 0, 0 }
OPTIMAL 47.0 @ { 0, 3, 1 }
OPTIMAL 46.0 @ { 1, 0, 2 }
OPTIMAL 45.0 @ { 0, 5, 0 }
OPTIMAL 44.0 @ { 4, 0, 1 }
Not possible to order 43 nuggets

If you believe there is a number greater than 100 that cannot be ordered, then you need to modify and run the code yourself.

Leave a Reply