# mcnuggets

mcnuggets, an Octave code which counts M(N), the number of ways a given number N of Chicken McNuggets can be assembled, given that they are only available in packages of 6, 9, and 20.

### Languages:

mcnuggets is available in a MATLAB version and an Octave version and a Python version.

### Related Programs:

change_diophantine, an Octave code which sets up a Diophantine equation to solve the change making problem, which counts the number of ways a given sum can be formed using coins of various denominations.

change_dynamic, an Octave code which uses dynamic programming to solve the change making problem, which counts the number of ways a given sum can be formed using coins of various denominations.

change_greedy, an Octave code which uses the greedy method to seek a solution to the change making problem, which tries to match a given amount by selecting coins of various denominations.

change_polynomial, an Octave code which uses a polynomial multiplication algorithm to count the ways of making various sums using a given number of coins.

diophantine_nd, an Octave code which is given a Diophantine equation in N variables, and returns all strictly positive solutions, or all nonnegative solutions.

football_dynamic, an Octave code which uses dynamic programming to count the ways of achieving a given score in football.

knapsack_01_brute, an Octave code which uses brute force to solve small versions of the 0/1 knapsack problem;

knapsack_greedy, an Octave code which uses a greedy algorithm to estimate a solution of the knapsack problem;

mcnuggets_diophantine, an Octave code which uses Diophantine methods to find the ways a given number N of Chicken McNuggets can be assembled, given that they are only available in packages of 6, 9, and 20.

satisfy_brute, an Octave code which uses brute force to find all assignments of values to a set of logical variables which make a complicated logical statement true.

subset_sum, an Octave code which seeks solutions of the subset sum problem, in which it is desired to find a subset of a set of integers which has a given sum.

subset_sum_backtrack, an Octave code which uses backtracking to solve the subset sum problem, to find a subset of a set of integers which has a given sum.

subset_sum_brute, an Octave code which uses brute force to solve the subset sum problem, to find a subset of a set of integers which has a given sum.

test_values, an Octave code which supplies test values of various mathematical functions, including Abramowitz, AGM, Airy, Bell, Bernoulli, Bessel, Beta, Binomial, Bivariate Normal, Catalan, Cauchy, Chebyshev, Chi Square, Clausen, Clebsch Gordan, Collatz, Cosine integral, Dawson, Debye, Dedekind, dilogarithm, Exponential integral, Elliptic, Error, Euler, Exponential integral, F probability, Fresnel, Frobenius, Gamma, Gegenbauer, Goodwin, Gudermannian, Harmonic, Hermite, Hypergeometric, inverse trigonometic, Jacobi, Julian Ephemeris Date, Kelvin, Laguerre, Laplace, Legendre, Lerch, Lobachevsky, Lobatto, Logarithmic integral, Log normal, McNugget numbers, Mertens, Mittag-Leffler, Moebius, Multinomial, Negative binomial, Nine J, Normal, Omega, Owen, Partition, Phi, Pi, Poisson, Polylogarithm, Polyomino, Prime, Psi, Rayleigh, Hyperbolic Sine integral, Sigma, Sine Power integral, Sine integral, Six J, Sphere area, Sphere volume, Spherical harmonic, Stirling, Stromgen, Struve, Student, Subfactorial, Student probability, Three J, Transport, Trigamma, Truncated normal, van der Corput, von Mises, Weibull, Wright omega, Zeta.

tsp_brute, an Octave code which reads a file of city-to-city distances and solves the traveling salesperson problem, using brute force.

tsp_descent, an Octave code which is given a city-to-city distance table, chooses an initial tour at random, and then tries simple variations, seeking to quickly find a tour of lower cost for the traveling salesperson problem (TSP).

tsp_greedy, an Octave code which is given a city-to-city distance table,, and solves a small traveling salesperson problem (TSP) using the greedy algorithm. It picks a starting city at random, and then successively visits the nearest unvisited city.

tsp_random, an Octave code which is given a city-to-city distance table, seeks a solution of the Traveling Salesperson Problem (TSP), by randomly generating round trips that visit every city, returning the tour of shortest length.

### Reference:

1. Nick Berry,
Chicken Nugget Numbers,
https://datagenetics.com/blog/august22015/index.html
Posted 02 August 2015.
2. John D Cook,
The Chicken McNugget Monoid,
https://www.johndcook.com/blog/2022/10/10/mcnugget-monoid/
10 October 2022.

### Source Code

• mcnugget_number_values.m, returns some sample values of M(N), the number of ways of getting N Chicken McNuggets;
• mcnugget_ways.m, returns the number of ways of getting N Chicken McNuggets for 0 <= N <= NMAX;
• mcnugget_solvable.m, determines whether there is any solution of the McNuggets problem for a given number N.

Last revised on 24 December 2022.